我一直在试图找到为什么“execute”只被打印一次的原因。但在我实际阅读的书中找不到答案,Java Threads或谷歌搜索。
public void init(){
t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("executed");
}
});
t.start();
while(true){
if(!t.isAlive())
t.run();
}
}
最佳答案
查看JDK源码,这里是Thread.run()
的定义:
public void run() {
if (target != null) {
target.run();
}
}
当您使用 Runnable
启动线程时,它会被设置为 target
。但是当线程结束运行时,系统会对其调用 exit()
,除其他外,它会执行以下操作:
target = null;
因此,您看到的“已执行”
是来自Thread
本身;当您在线程上调用 run()
时,target
已无效,run()
什么也不做。
关于java - 在终止状态线程上运行(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548610/