我开始知道下面的代码将输出显示为false,但是当我们看到这个Thread实例时,我们创建的线程被设置为守护进程并且仍在运行,那么为什么方法调用thread.isAlive()返回错误,给人一种错误的印象,即#34;线程完成了工作并且已经死了"
public class MyThreads {
private static class MyDaemonThread extends Thread {
public MyDaemonThread() {
setDaemon(true);
}
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
public static void main(String[] args) throws InterruptedException {
Thread thread = new MyDaemonThread();
thread.start();
thread.join();
System.out.println(thread.isAlive());
}
}
任何人都可以对此有所了解吗?
答案 0 :(得分:4)
thread.join();
是一个表达式,告诉主线程等待thread
终止。所以,它只在线程完成时进入打印语句。所以它是正确的结果,因为thread
已经终止。
如果删除join
,您会看到结果为真