Java JVM如何将长时间运行的线程发送给;停止“;

Java JVM如何将长时间运行的线程发送给;停止“;,java,multithreading,jvm,application-shutdown,Java,Multithreading,Jvm,Application Shutdown,我了解到JVM不会调用thread.interrupt()方法来停止线程 那么它在这里到底是如何工作的呢?JVM如何关闭/停止线程? < P> JVM本身不调用中断,如果调用系统:退出或用户CTRL C的应用程序(线程只停在他们正在做的任何操作的中间——这是原因系统:不建议退出),则停止线程冷。p> 停止,我指的是野蛮——就像你在两行代码之间,第二行从来没有被执行过,它甚至可以在函数调用的中间把你甩掉。 有一种方法可以注册一个shutdownhook来控制这个行为,顺便说一下,我只是给你一个你应

我了解到JVM不会调用thread.interrupt()方法来停止线程


那么它在这里到底是如何工作的呢?JVM如何关闭/停止线程?

< P> JVM本身不调用中断,如果调用系统:退出或用户CTRL C的应用程序(线程只停在他们正在做的任何操作的中间——这是原因系统:不建议退出),则停止线程冷。p>

停止,我指的是野蛮——就像你在两行代码之间,第二行从来没有被执行过,它甚至可以在函数调用的中间把你甩掉。 有一种方法可以注册一个shutdownhook来控制这个行为,顺便说一下,我只是给你一个你应该期望的默认行为

如果所有非守护进程线程和平退出,那么守护进程线程将停止,就像您调用System::exit一样


在正常情况下,你的应用程序应该按照用户的请求处理关闭,手动停止所有线程并干净地退出。这就是Thread::interrupt派上用场的地方。

停止意味着什么?我想这就是他们感兴趣的,底层JVM实现。更新了我的答案。我不相信它会。它只是退出,让操作系统来完成。