Java中的悬空线程

时间:2012-04-05 12:58:44

标签: java multithreading

Java中悬空线程会发生什么?

就像我创建一个应用程序并生成多个线程一样。其中一个线程没有完成,主程序在此之前完成。这个悬空线会发生什么?是否会无限期地保留在线程池中,否则JVM会在阈值时间段后终止线程???

1 个答案:

答案 0 :(得分:9)

这取决于线程是否已被标记为“守护进程”。当JVM退出时,守护程序线程将被终止。如果有任何线程不是守护进程,则JVM将退出。它会等待那些线程先完成。

默认情况下,线程采用其父线程的守护程序状态。主线程具有守护进程集false,因此由它分叉的任何线程也将是false。您可以在线程开始之前将守护程序标志设置为true

Thread thread = new Thread(...);
thread.setDaemon(true);
thread.start();