Java InterruptedException-I';我甚至不知道线程被中断意味着什么,或者为什么会被中断

Java InterruptedException-I';我甚至不知道线程被中断意味着什么,或者为什么会被中断,java,multithreading,interrupted-exception,Java,Multithreading,Interrupted Exception,我一直在一个同步块中得到这个异常,在这个块中,我在同步的同一个对象上调用wait。首先中断线程意味着什么? 第二,发生这种情况的正常情况是什么?关于可能发生什么或我应该做什么的任何建议?中断机制用于通知线程它应该尽快终止自身。这允许被中断的线程安全退出,而不会使任何数据处于不一致的状态 首先中断线程意味着什么 这意味着在线程对象上调用了Thread.interrupt()。这将在线程上设置interrupted标志,并导致某些方法调用在异常情况下终止 第二,发生这种情况的正常情况是什么 它通常在

我一直在一个同步块中得到这个异常,在这个块中,我在同步的同一个对象上调用wait。首先中断线程意味着什么?
第二,发生这种情况的正常情况是什么?关于可能发生什么或我应该做什么的任何建议?

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

首先中断线程意味着什么

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

第二,发生这种情况的正常情况是什么

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

请注意,中断线程并不保证停止它。实际上,除非抛出异常,否则线程只有在调用
interrupted()
isinterrupted()
时才会注意到异常已被中断。即便如此,它也可以简单地清除旗帜,继续下去,就好像什么都没发生一样

关于可能发生的事情或我应该做什么,有什么建议吗


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

您能发布一些代码,让我们了解问题的背景吗?有关更多信息,我建议阅读Java并发的实践,特别是“取消和关闭”一章。我想指出,中断并不一定意味着结束处理。它只是设置一个标志并抛出InterruptedException。中断线程的反应完全是它的问题。它可用于转换处理状态或作为重启启动器。它只是告诉线程一些根本性的改变,当前的执行状态可能不再有效、有用、可取或其他。