正如标题所暗示的,当得到InterruptedException时,我们是否需要强制jvm退出?我问的原因是我有点与(Unix)中断信号混淆。当我们在运行java应用程序时键入Ctrl-C时,阻塞线程是否会出现InterruptedException?
简单来说,
1)InterruptedException何时以及为何被抛出?
2)当JVM从外部中断或终止时(如Unix命令),线程是否会中断?
由于
答案 0 :(得分:5)
不,通常您不会退出JVM以响应InterruptedException
。
在另一个线程调用其interrupt()
方法之后,可能会在一个线程中引发InterruptedException
。它与硬件中断或操作系统信号无关。中断是一种告诉线程停止正在执行的操作并尽快退出的方法,而不会使共享内存处于损坏状态。
当线程明确描述它们如何响应中断时,才应该中断线程。通常,这将例如响应于诸如按下“取消”按钮之类的用户交互来完成。
通常,中断只影响单个线程,应用程序的其余部分继续运行。但是,我可以设想在JVM中安装一个信号处理程序,它通过干净地关闭整个服务器来响应信号;这很可能会导致请求进程线程和其他线程中断。
答案 1 :(得分:0)
中断异常与JVM错误条件无关,它是休眠线程在正常事件过程中被唤醒时(通过thread.interrupt())接收的内容。