将Thread成员放在Runnable类中是不好的做法,如下所示:
public class A implements Runnable{
public Thread thread;
public A(){
thread = new Thread(this)
}
public void run(){
...
}
}
然后像这样调用这个Runnable类:
A a = new A();
a.thread.start();
...
a.thread.join();
...
答案 0 :(得分:1)
是的,因为没有(架构)保证,Runnable始终具有相同的线程。如果将其放入执行程序中,则代码将产生多个错误。虽然你的代码在你的特殊情况下工作,但是你破坏了线程和Runnable之间的分离,并且创建了一个是有充分理由的。
如果您因任何原因需要访问实际线程,最好使用Thread.currentThread()
。