捕获InterruptedException时JVM是否需要退出

Alf*_*red 3 java jvm signals interrupted-exception

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

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

谢谢

eri*_*son 5

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

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

线程只有在明确描述它们如何响应中断时才会被中断.通常,这将例如响应于诸如按下"取消"按钮之类的用户交互来完成.

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