我有一个主线程,它创建了其他线程(Name = TASK),它的任务独立于主线程。如果主线程完成它的工作,那么是否有可能主线程退出,而其他线程(TASK)可以继续执行,而不是作为一个守护线程。我知道守护线程的概念,但我们不能使用它,因为当主线程退出时,所有其他守护线程都会死亡。如果这是不可能的,那么是否有其他解决办法
是否有可能主线程退出,而其他线程(TASK)可以继续执行,而不是作为守护线程
这就是守护线程的定义。如果你想让线程继续执行,那么它们应该而不是是守护进程。当最后一个用户线程结束时,JVM将杀死守护线程。在JVM终止之前,JVM要等待非守护线程完成。
:
- Java中的守护线程是什么?
- 如何创建守护线程?
- 如何保持我的程序存活只要守护线程正在运行?
仅供参考:当你分叉一个线程时,它会获取这个分叉线程的守护进程状态。"主"线程总是非守护线程。
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();
也许你把守护线程的定义搞反了?引用我们不能使用它,因为当主线程退出时,所有其他守护线程都将死亡。
Thread.setDaemon(...)
javadocs:
void java.lang.Thread.setDaemon(boolean on)
将此线程标记为守护线程或用户线程。
当所有线程都是守护线程时,Java虚拟机退出。