gpt4 book ai didi

java - java线程的isAlive()方法不能正常工作?

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:07 26 4
gpt4 key购买 nike

我正在尝试 Java 线程的 isAlive() 方法示例。但我发现 isAlive() 方法返回 false 即使线程已经启动。有人可以告诉我我做错了什么吗?这是代码片段。

package app;

public class ThreadAliveDemo {

public static void main(String[] args) {

Thread myThread;

myThread = new Thread()
{
public void run()
{
Thread.sleep(3000);
System.out.println("My Thread.");
}
};

myThread.setName("My Thread");
myThread.start();

if(!myThread.isAlive())
{
myThread.setName("My Thread");
myThread.start();
}

}

}

最佳答案

在您调用 start() 和调用 isAlive() 之间,线程很有可能已经启动、执行和完成。

Java 不保证这些事情发生的顺序。它可以立即执行生成的线程,也可以选择将其推迟到稍后执行。

顺便说一句,您的代码试图在线程终止后重新启动该线程。这是 not permitted :

It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution.

所以在检查 isAlive() 之后调用 start() 永远不会起作用。

关于java - java线程的isAlive()方法不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140731/

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