Java中的悬空线程

div*_*gon 3 java multithreading

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

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

Gra*_*ray 9

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

默认情况下,线程采用其父线程的守护程序状态.主线程设置了守护进程,false因此它所分叉的任何线程也将如此false.您可以在线程启动true 之前将守护程序标志设置为:

Thread thread = new Thread(...);
thread.setDaemon(true);
thread.start();
Run Code Online (Sandbox Code Playgroud)