实现线程的一种方法是这样的:
Runnable r1 = new Runnable() {
public void run() {
// my code here
}
};
Thread thread1 = new Thread(r1);
thread1.start();
现在,如果我坚持使用这个简单的方法,是否可以从该线程的外部在 run 块中传递一个值。例如,我在 run 中的代码包含一个逻辑,该逻辑需要来自进程的输出流,它将在调用时使用。
我如何将此流程流对象传递给此运行块。
我知道还有其他方法,例如实现可运行或扩展线程,但是您能告诉我如何使用上述方法来完成此操作吗?
最佳答案
您可以使用本地 final
变量:
final OutputStream stream = /* code that creates/obtains an OutputStream */
Runnable r1 = new Runnable() {
public void run() {
// code that uses stream here
}
};
Thread thread1 = new Thread(r1);
thread1.start();
final
变量对匿名内部类可见,就像上面的 Runnable
一样。如果你的 Runnable 变得足够复杂,那么你应该考虑把它变成一个命名类。此时构造函数参数通常是传递参数的最佳机制。
关于java - 关于 Java 中 Runnable 接口(interface)的问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4536140/