每当我在 Eclipse 中运行调试配置(“调试会话”)并切换到调试透视图时,我总是在调用堆栈视图中看到“线程”和“守护线程”。
为什么有些线程守护进程和其他只是 POT(普通旧线程)?提前致谢!
(注意:我不是在问什么是守护进程,或者什么是守护线程,只是 Eclipse 如何确定哪些线程是守护进程。)
每当我在 Eclipse 中运行调试配置(“调试会话”)并切换到调试透视图时,我总是在调用堆栈视图中看到“线程”和“守护线程”。
为什么有些线程守护进程和其他只是 POT(普通旧线程)?提前致谢!
(注意:我不是在问什么是守护进程,或者什么是守护线程,只是 Eclipse 如何确定哪些线程是守护进程。)
Java中的守护线程是在后台运行的线程(主要由JVM创建),用于执行后台任务(如垃圾收集)。守护线程和用户线程之间的主要区别在于,一旦所有用户线程完成执行,Java 就会自行终止。JVM不会等待守护线程完成它们的执行。
请注意,您可以使用户线程创建的线程成为守护线程(setDaemon(true)
并且必须在调用线程的start()
方法之前调用它)。
为了让程序继续运行,它必须始终至少有一个活动用户线程。
Eclipse 和您一样,可以轻松检查是否是线程isDaemon()
。
守护线程是任何调用了 setDamon(true) 的线程。或者任何作为守护线程子线程的线程。我猜 eclipse 使用 isDaemon() 来确定哪些线程是守护进程。
当所有非守护线程都终止时,JVM 将退出。所以守护线程用于守护任务——即不应该阻止JVM退出的任务。
创建Thread
对象后,您可以调用andsetDaemon(true)
将Thread
其标记为守护进程。
然后,您可以调用isDaemon()
线程以确定该线程是否已被标记为守护进程。
eclipse 调试器只是读取这个标志。