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