gpt4 book ai didi

java - 在终止状态线程上运行()

转载 作者:行者123 更新时间:2023-11-29 03:26:57 25 4
gpt4 key购买 nike

我一直在试图找到为什么“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com