如何将参数传递给 Java 线程?

新手上路,请多包涵

谁能向我建议如何将参数传递给线程?

另外,它如何用于匿名类?

原文由 Steve 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 518
2 个回答

您需要将构造函数中的参数传递给 Runnable 对象:

 public class MyRunnable implements Runnable {

   public MyRunnable(Object parameter) {
       // store parameter for later user
   }

   public void run() {
   }
}

并这样调用它:

 Runnable r = new MyRunnable(param_value);
new Thread(r).start();

原文由 Alnitak 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于匿名类:

作为对这里问题编辑的回应,匿名类是如何工作的

   final X parameter = ...; // the final is important
   Thread t = new Thread(new Runnable() {
       p = parameter;
       public void run() {
         ...
       };
   t.start();


命名类:

您有一个扩展 Thread(或实现 Runnable)的类和一个带有您要传递的参数的构造函数。然后,当你创建新线程时,你必须传入参数,然后启动线程,就像这样:

 Thread t = new MyThread(args...);
t.start();

Runnable 是比 Thread BTW 更好的解决方案。所以我更喜欢:

    public class MyRunnable implements Runnable {
      private X parameter;
      public MyRunnable(X parameter) {
         this.parameter = parameter;
      }

      public void run() {
      }
   }
   Thread t = new Thread(new MyRunnable(parameter));
   t.start();

这个答案与这个类似的问题基本相同: How to pass parameters to a Thread object

原文由 Nick Fortescue 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题