3

每当我在 Eclipse 中运行调试配置(“调试会话”)并切换到调试透视图时,我总是在调用堆栈视图中看到“线程”和“守护线程”。

为什么有些线程守护进程和其他只是 POT(普通旧线程)?提前致谢!

(注意:我不是在问什么是守护进程,或者什么是守护线程,只是 Eclipse 如何确定哪些线程是守护进程。)

4

3 回答 3

5

Java中的守护线程是在后台运行的线程(主要由JVM创建),用于执行后台任务(如垃圾收集)。守护线程用户线程之间的主要区别在于,一旦所有用户线程完成执行,Java 就会自行终止。JVM不会等待守护线程完成它们的执行。

请注意,您可以使用户线程创建的线程成为守护线程setDaemon(true)并且必须在调用线程的start()方法之前调用它)。
为了让程序继续运行,它必须始终至少有一个活动用户线程

Eclipse 和您一样,可以轻松检查是否是线程isDaemon()

于 2013-03-29T21:15:40.007 回答
1

守护线程是任何调用了 setDamon(true) 的线程。或者任何作为守护线程子线程的线程。我猜 eclipse 使用 isDaemon() 来确定哪些线程是守护进程。

于 2013-03-29T21:15:24.073 回答
0

当所有非守护线程都终止时,JVM 将退出。所以守护线程用于守护任务——即不应该阻止JVM退出的任务。

创建Thread对象后,您可以调用andsetDaemon(true)Thread其标记为守护进程。

然后,您可以调用isDaemon()线程以确定该线程是否已被标记为守护进程。

eclipse 调试器只是读取这个标志。

于 2013-03-29T21:19:23.790 回答