我有一个主线程,它创建其他线程(名称=任务),其任务独立于主线程。如果主线程完成它可以工作,那么主线程是否有可能退出并且其他线程(TASK)可以继续执行它而不是一个守护线程。我知道守护线程的概念,但我们不能使用它,因为当主线程退出时,所有其他守护线程都死了。如果不可能,那么是否有任何解决方法。
问问题
753 次
1 回答
4
是否有可能主退出并且其他线程(TASK)可以继续执行而不是守护线程
这就是守护线程的定义。如果您希望线程继续执行,那么它们不应该是守护进程。当最后一个用户线程完成时,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();
我们不能使用它,因为当主线程退出时,所有其他守护线程都死了。
也许你对守护线程的定义倒过来了?引用Thread.setDaemon(...)
javadocs:
void java.lang.Thread.setDaemon(boolean on)
将此线程标记为守护线程或用户线程。当唯一运行的线程都是守护线程时,Java 虚拟机退出。
于 2013-05-29T11:48:49.150 回答