Java中悬空线程会发生什么?
就像我创建一个应用程序并生成多个线程一样。其中一个线程没有完成,主程序在此之前完成。这个悬空线会发生什么?是否会无限期地保留在线程池中,否则JVM会在阈值时间段后终止线程???
答案 0 :(得分:9)
这取决于线程是否已被标记为“守护进程”。当JVM退出时,守护程序线程将被终止。如果有任何线程不是守护进程,则JVM将不退出。它会等待那些线程先完成。
默认情况下,线程采用其父线程的守护程序状态。主线程具有守护进程集false
,因此由它分叉的任何线程也将是false
。您可以在线程开始之前将守护程序标志设置为true
:
Thread thread = new Thread(...);
thread.setDaemon(true);
thread.start();