实现线程的一种方法是这样的:

  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/

10-13 03:42