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

3

在Java多线程应用程序中,我们处理InterruptedThreadException异常。如果另一个线程中断当前线程,将抛出此异常。现在当另一个线程知道它将引起异常时,为什么可能想要中断当前线程?


2
这个问题已经在这里得到了回答:https://dev59.com/KXVC5IYBdhLWcg3wpS7g - Marco Corona
2个回答

4

3

在大多数情况下,为了通知一个Thread应该中止。通常,执行某种批量操作的工作线程会被实现为在中断时终止自身(即从其run()方法中退出)。

不幸的是,很多程序员只是捕获并吞掉中断信号,这是非常非常糟糕的做法。如果一个Thread没有期望到InterruptedException,它应该重新抛出或者通过调用restore恢复其中断状态,如果它不能throw它(例如受限于某个Interface)。

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

1
@Downvoter,请解释一下你的负评。 - Ravi K Thapliyal
3
我明白你的回答,它很有道理。可能是因为某人“吃掉”了他遇到的所有InterruptedException而感到冒犯了。 - Eric des Courtis
1
你们不懂Java,随时可以吃掉interrupted exception,我已经这么做了好几年。 - megazord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接