Java InterruptedException - 我对于线程被中断或者为什么会被中断的含义感到困惑

时间:2012-03-11 02:58:20

标签: java multithreading interrupted-exception

我一直在同步块中得到这个异常,我在同一个块上调用wait等待同步的对象。首先要打断一个线程是什么意思? 其次,这会发生什么样的正常情况?关于可能发生的事情或我该做什么的任何建议?

2 个答案:

答案 0 :(得分:3)

中断机制用于通知线程它应该尽快终止自身。这允许被中断的线程安全地退出,而不会使任何数据处于不一致状态。

答案 1 :(得分:3)

  

线程首先被中断是什么意思?

这意味着在线程对象上调用了Thread.interrupt()。这会在线程上设置interrupted标志,并导致某些方法调用以异常终止。

  

其次,发生这种情况的正常情况是什么?

通常在第二个线程想要告诉该线程停止正在执行的操作时使用它。调用可以是直接的,也可以通过库方法完成。例如,ThreadPoolExecutor.shutdownNow()使用中断来(尝试)终止执行任务。

请注意,中断线程并不能保证阻止它。实际上,除非抛出异常,否则线程只会在调用interupted()isInterupted()时才会注意到它已被中断。即使这样,它也可以简单地清除旗帜并继续,好像什么也没发生过一样。

  

有关可能发生的事情或我应该做什么的任何建议?

看看什么是“控制”被中断的线程。