Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading Java中的守护进程和非守护进程线程_Multithreading_Jvm_Virtual Machine_Daemon - Fatal编程技术网

Multithreading Java中的守护进程和非守护进程线程

Multithreading Java中的守护进程和非守护进程线程,multithreading,jvm,virtual-machine,daemon,Multithreading,Jvm,Virtual Machine,Daemon,Java中的JVM负责在执行Java程序时创建非守护进程线程。对吗? 如果是这样,谁负责在Java中创建守护进程线程? 程序员和JVM都创建非守护进程线程?对吗? 寻找一个清晰的解释 提前感谢。不管是“JVM”还是“程序员”启动了线程。一个线程在启动前被调用,或者一个守护进程线程没有调用就创建了该线程,那么它就是守护进程线程。就这样 报告还说: 当Java虚拟机启动时,通常只有一个非守护进程线程(它通常调用某个指定类的名为main的方法) 没有责任创建守护进程线程。将线程标记为守护进程只有一个含

Java中的JVM负责在执行Java程序时创建非守护进程线程。对吗? 如果是这样,谁负责在Java中创建守护进程线程? 程序员和JVM都创建非守护进程线程?对吗? 寻找一个清晰的解释


提前感谢。

不管是“JVM”还是“程序员”启动了线程。一个线程在启动前被调用,或者一个守护进程线程没有调用就创建了该线程,那么它就是守护进程线程。就这样

报告还说:

当Java虚拟机启动时,通常只有一个非守护进程线程(它通常调用某个指定类的名为
main
的方法)

没有责任创建守护进程线程。将线程标记为守护进程只有一个含义,文档将继续解释:

Java虚拟机将继续执行线程,直到发生以下任一情况:

  • 运行时
    退出
    方法已被调用,并且安全管理器已允许执行退出操作
  • 通过调用
    run
    方法返回或抛出传播到
    run
    方法之外的异常,所有非守护进程线程都已死亡

所以,这是唯一的含义;非守护进程线程的存在可能会阻止JVM自动终止,而标记为守护进程的线程则不会。这是否回答了您的问题?对谢谢。