Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为守护进程线程意味着什么?_Java - Fatal编程技术网

Java 作为守护进程线程意味着什么?

Java 作为守护进程线程意味着什么?,java,Java,我完全了解在JVM退出时将线程标记为守护进程线程的影响(如果所有非守护进程线程都退出,JVM将退出) 将线程设置为守护进程是否还有其他副作用 (作为一个完整的旁白,除了语义之外,这真的是不相关的。在这种情况下,守护进程线程的含义不是倒过来的:守护进程线程不应该让JVM保持活动状态吗……例如,如果我编写自己的HTTP守护进程并启动它运行,我不希望JVM在该线程活动时保持活动状态吗?或者有其他的语义吗对于术语“daemon”?)来说,它意味着线程被分离,并将在JVM运行时一直运行,除非您明确停止它。

我完全了解在JVM退出时将线程标记为守护进程线程的影响(如果所有非守护进程线程都退出,JVM将退出)

将线程设置为守护进程是否还有其他副作用


(作为一个完整的旁白,除了语义之外,这真的是不相关的。在这种情况下,守护进程线程的含义不是倒过来的:守护进程线程不应该让JVM保持活动状态吗……例如,如果我编写自己的HTTP守护进程并启动它运行,我不希望JVM在该线程活动时保持活动状态吗?或者有其他的语义吗对于术语“daemon”?)

来说,它意味着线程被分离,并将在JVM运行时一直运行,除非您明确停止它。根据规范,只要有任何非daemon线程在运行,JVM就会一直运行

除此之外,它没有什么意义


你可能会说这是倒退——毕竟是关机(8)杀死守护进程-但是JVM应该表现得像一个行为良好的进程,否则,这意味着人们应该能够期望它在不被杀死的情况下终止。因此,这个规范是一个基于更常见用例的设计决策。

守护进程线程是对其他线程的服务。 它只是jvm本身的守护进程,而不是外部世界的守护进程。因此,如果只是守护进程,它们就没有任何用处了。 如果您想要一个http守护进程,您只需编写一个具有普通线程的httpserver,并使用操作系统的工具集将其作为守护进程调用,以作为守护进程运行应用程序


控制jvm中的守护进程线程不是操作系统的守护进程线程。守护进程通常是无限循环,您不希望jvm无限运行,而您运行的只是几个等待输入的守护进程(未给出).

通常,守护进程线程和非守护进程线程同时运行:非守护进程线程正在做有用的工作,但守护进程线程只是坐在那里等待事情发生。有用的工作完成后,程序应该退出;您不希望它被什么都不做的线程阻塞。在您的示例中,HTTP daemon是一个守护进程,而不是守护线程。人们可能会想象一台桌面计算机在没有非守护进程运行的情况下关闭,而您不希望服务器保持它的运行。(或者您可能会……无论如何,这不是最好的名称。)是的-我非常了解这个行为,并且经常利用它。我的完全随机的旁白只是一个问题,看看其他人是否同意这个名称的混淆:)它不是真的混淆,守护进程应该永远不会退出——在程序运行时始终运行,因为它们永远不会真正退出,他们不应该阻止程序本身退出。