为什么线程会中断另一个线程

时间:2013-07-05 18:12:59

标签: java multithreading interrupt

在Java多线程应用程序中,我们处理InterruptedThreadException。如果另一个线程中断当前线程,则抛出此异常。现在,当另一个线程知道它会导致异常时,它可能想要中断当前线程的原因是什么?

2 个答案:

答案 0 :(得分:3)

很多原因。但最受欢迎的是在线程上取消某些任务。

有关详细信息,请参阅http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html

答案 1 :(得分:2)

在大多数情况下,要通知Thread应该中止。通常,执行某种批处理操作的工作线程以在中断时终止自身(即退出其run()方法)的方式实现。

不幸的是,许多程序员只是抓住并吞下它,这是一种非常糟糕的做法。如果Thread不期望InterruptedException,它应该重新抛出,或者如果它不能抛出它应该恢复其中断状态(如果受到接口限制< / em>例如)通​​过调用

catch (InterruptedException e) {
    Thread.currentThread().interrupt();
}