我不断在同步块中遇到此异常,在该块中,我在同步的同一个对象上调用 wait 。线程首先被中断是什么意思?其次,发生这种情况的正常情况是什么?关于可能发生的事情或我应该做什么的任何建议?
问问题
306 次
2 回答
3
中断机制用于通知线程它应该尽快终止自己。这允许被中断的线程安全退出,而不会使任何数据处于不一致状态。
于 2012-03-11T03:06:33.587 回答
3
线程首先被中断是什么意思?
这意味着有东西调用Thread.interrupt()
了线程对象。这interrupted
会在线程上设置标志,并导致某些方法调用以异常终止。
其次,发生这种情况的正常情况是什么?
它通常在第二个线程想要告诉该线程停止它正在做的事情时使用。调用可以是直接的,也可以通过库方法完成。例如,ThreadPoolExecutor.shutdownNow()
使用中断来(尝试)终止正在执行的任务。
请注意,中断线程并不能保证停止它。实际上,除非抛出异常,否则线程只会在调用interupted()
或时才注意到它已被中断isInterupted()
。即使那样,它也可以简单地清除标志并继续,就好像什么都没发生一样。
关于可能发生的事情或我应该做什么的任何建议?
看看什么是“控制”被中断的线程。
于 2012-03-11T03:07:32.653 回答