Eclipse Debugger:Threads vs“Daemon”Threads

时间:2013-03-29 21:11:26

标签: java eclipse multithreading debugging daemon

任何时候我在Eclipse中运行调试配置(“调试会话”),然后切换到Debug Perspective,我总是在调用堆栈视图中看到“Threads”以及“Daemon Threads”。

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

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

3 个答案:

答案 0 :(得分:5)

Java 中的

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

请注意,您可以通过setDaemon(true)用户线程创建的线程设置为守护程序线程(并且必须在线程{之前调用它)调用{1}}方法)。
为了让程序继续运行,它必须始终至少一个实时用户线程

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

当所有非守护程序线程终止时,JVM将退出。因此,守护程序线程用于守护程序任务 - 即不应阻止JVM退出的任务。

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

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

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