我有一个主线程,它创建了一个独立于主线程的任务的其他线程(Name = TASK)。 如果主线程完成它的工作原理那么主要出口和其他线程(TASK)是否可以继续执行而不是deamon线程。 我知道deamon线程的概念,但我们不能使用它,因为主线程退出时,所有其他deamon线程死亡。 如果不可能,那么是否有任何解决方法。
答案 0 :(得分:4)
是否有可能主出口和其他线程(TASK)可以继续执行而不是作为deamon线程
这是守护程序线程的定义。如果您希望线程继续执行,那么它们不是守护进程。当最后一个用户线程完成时,守护程序线程被JVM杀死。在JVM终止之前,JVM等待非守护程序线程完成。
请参阅:
仅供参考:当你分叉一个线程时,它会获取分叉线程的守护进程状态。 “主”线程始终是非守护进程。
Thread thread = new Thread(new MyRunnable(...), "my runnable");
// make sure my thread is not a daemon thread so the JVM will wait for it
thread.setDaemon(false);
thread.start();
当主线程退出时,我们无法使用它,所有其他deamon线程都会死掉。
也许你有后台守护程序线程的定义?引用Thread.setDaemon(...)
javadocs:
void java.lang.Thread.setDaemon(boolean on)
将此线程标记为守护程序线程或用户线程。当运行的唯一线程都是守护程序线程时,Java虚拟机将退出。