我一直试图找到“执行”只打印一次的原因。但在我正在阅读的书中找不到答案,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();
}
}
答案 0 :(得分:4)
查看JDK源代码,这里是Thread.run()
的定义:
public void run() {
if (target != null) {
target.run();
}
}
当您使用Runnable
发起线程时,它会设置为target
。但是当线程完成运行时,系统会在其上调用exit()
,其中包括:{/ p>
target = null;
所以你看到的那个"executed"
来自Thread
本身;当您在主题上致电run()
时,target
已取消,run()
什么都不做。