我了解到JVM没有调用thread.interrupt()方法来阻止来自https://stackoverflow.com/a/28731735/3034458的线程
然后它在这里如何运作? JVM如何关闭/停止线程?
答案 0 :(得分:0)
JVM本身不调用中断,它只是在你调用System :: exit或者用户ctrl-c是应用程序时停止线程冷(线程只是停在他们正在做的任何操作的中间 - 这是不推荐使用System :: exit的原因;
刚刚停止我的意思是残酷地 - 就像你在两行代码之间并且第二行没有被执行,它甚至可以在函数调用中将你抛弃。
有一种方法可以注册一个关闭钩子来控制这种行为,我只是给你你应该期望的默认行为。
如果你的所有非守护程序线程都安静地退出,那么守护程序线程就会停止,就像你调用了System :: exit一样;
在正常情况下,您的应用应该根据其用户的请求处理关机,手动停止所有线程并彻底退出。这就是Thread :: interrupt派上用场的地方。