捕获InterruptedException时JVM是否需要退出

时间:2012-08-14 18:17:28

标签: java jvm signals interrupted-exception

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

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

由于

2 个答案:

答案 0 :(得分:5)

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

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

当线程明确描述它们如何响应中断时,才应该中断线程。通常,这将例如响应于诸如按下“取消”按钮之类的用户交互来完成。

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

答案 1 :(得分:0)

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