谁能告诉我如何将参数传递给线程?
此外,它如何为匿名类工作?
发布于 2019-06-11 14:49:03
通过Runnable或Thread类的构造函数
class MyThread extends Thread {
private String to;
public MyThread(String to) {
this.to = to;
}
@Override
public void run() {
System.out.println("hello " + to);
}
}
public static void main(String[] args) {
new MyThread("world!").start();
}
发布于 2019-06-11 16:28:31
这个答案来得很晚,但也许有人会发现它很有用。它是关于如何将参数传递给a Runnable
甚至没有声明命名类(对于内联器很方便):
String someValue = "Just a demo, really...";
new Thread(new Runnable() {
private String myParam;
public Runnable init(String myParam) {
this.myParam = myParam;
return this;
}
@Override
public void run() {
System.out.println("This is called from another thread.");
System.out.println(this.myParam);
}
}.init(someValue)).start();
当然,您可以将执行推迟start
到一些更方便或适当的时刻。这取决于你的init
方法签名(所以它可能需要更多和/或不同的论点),当然甚至是它的名字,但基本上你会有一个想法。
事实上,还有另一种方法可以使用初始化程序块将参数传递给匿名类。考虑一下:
String someValue = "Another demo, no serious thing...";
int anotherValue = 42;
new Thread(new Runnable() {
private String myParam;
private int myOtherParam;
{
this.myParam = someValue;
this.myOtherParam = anotherValue;
}
@Override
public void run() {
System.out.println("This comes from another thread.");
System.out.println(this.myParam + ", " + this.myOtherParam);
}
}).start();
所有这些都发生在初始化程序块内部。
https://stackoverflow.com/questions/-100006992
复制相似问题