谁能向我建议如何将参数传递给线程?
另外,它如何用于匿名类?
原文由 Steve 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
您需要将构造函数中的参数传递给 Runnable 对象:
并这样调用它: