JVM如何通知长时间运行的线程“停止”[重复]

问题描述 投票:-2回答:1

我了解到JVM没有调用thread.interrupt()方法来阻止来自https://stackoverflow.com/a/28731735/3034458的线程

那它在这里真的有用吗? JVM如何关闭/停止线程?

java multithreading jvm application-shutdown
1个回答
0
投票

JVM本身不调用中断,它只是在你调用System :: exit或者用户ctrl-c是应用程序时停止线程冷(线程只是停在他们正在做的任何操作的中间 - 这就是原因不建议使用System :: exit);

只是停止我的意思是残酷 - 就像你在两行代码之间而第二行没有被执行,它甚至可以在函数调用中将你抛弃。

有一种方法可以注册一个关闭钩子来控制这种行为,我只是给你你应该期望的默认行为。

如果你的所有非守护程序线程都安静地退出,那么守护程序线程就会被停止,就像你调用了System :: exit一样;

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

© www.soinside.com 2019 - 2024. All rights reserved.