2012-03-01 72 views

回答

2

当没有时,Java虚拟机退出 - 守护进程线程仍在运行。通过使用setDaemon(true)将线程标记为守护程序线程,即告知虚拟机即使此线程仍处于运行状态也可以退出。

java.lang.Thread documentation

将该线程标记为守护线程或用户线程。当只有运行的线程都是守护进程线程时,Java虚拟机才会退出。

+0

谢谢,但是如果虚拟机退出,守护线程仍然工作吗?我认为虚拟机是所有线程工作的环境。因此虚拟机退出意味着守护线程从它的管理,这是否没有问题? – zionpi 2012-03-01 01:33:13

+0

当VM退出时,所有线程停止。守护程序线程只在虚拟机运行时运行。 – 2012-03-01 01:52:39

+0

很显然,VM是一个伟大的神秘莫测。 – zionpi 2012-03-01 02:27:26

0

如果所有你main()确实是创建了一个无限循环线程(例如,而(真){尝试{睡眠(1000);}赶上(例外五){}`然后

  • 如果线程不是守护那么你的程序将永远
  • 运行,如果线程一个守护程序将退出,杀死守护线程

规格从逻辑上讲,将线程设置为守护进程并不会使进程成为后台进程,这种类型在后台运行。为此,请参阅this answer I wrote some time back

+0

哦,谢谢,我认为在虚拟机上有很多东西需要学习。 – zionpi 2012-03-01 02:23:50

相关问题