JVM在捕获中断异常时是否需要退出?



正如标题所暗示的,当得到InterruptedException时,我们是否需要强制jvm退出?我问的原因是我对(Unix)中断信号有点困惑。当我们在 java 应用程序运行时键入 Ctrl-C 时,阻塞线程会得到 InterruptedException 吗?

所以简单来说,
1)何时以及为什么InterruptedException被抛出?
2)当JVM从外部中断或终止(如Unix命令)时,线程会中断吗?

谢谢

不,通常您不会退出 JVM 以响应InterruptedException

线程调用其 interrupt() 方法后,可以在线程中引发InterruptedException。它与硬件中断或操作系统信号没有任何关系。中断是一种告诉线程停止其正在执行的操作并尽可能快地退出的方法,而不会使共享内存处于损坏状态。

线程只有在明确描述它们如何响应中断时才应中断。通常,这将完成,例如,响应用户交互,如按下"取消"按钮。

通常,中断只影响单个线程,应用程序的其余部分继续运行。但是,我可以设想在 JVM 中安装一个信号处理程序,通过干净地关闭整个服务器来响应信号;这可能会导致请求进程线程和其他线程中断。

中断异常与 JVM 错误条件无关,它是休眠线程在正常事件过程中被唤醒(由 thread.interrupt())时接收的内容。

最新更新