Java中断机制
目录 1 前提 2 何为中断 3 中断的好处 4 Thread类的中断相关方法 5 如何处理InterruptedException 5.1 不捕捉 InterruptedException,将它传播给调用者 5.2 捕捉InterruptedException,然后重新抛出 5.3 捕捉 InterruptedException 后恢复中断状态 5.4 生吞中断 —— 一般不要这么做 6 实现可取消的任务 7 实现不可取消的任务 1 前提 假设程序需要停止正在运行的线程,如果直接stop线程,则有可能导致程序运行不完整、造成数据的不一致性以及其它不可控情况,因此Java提供了中断机制。 2 何为中断 每个线程都有一个与之相关联的 Boolean 属性,用于表示线程的 中断状态(interrupted status) 。中断状态初始时为 false。当另一个线程通过调用 Thread.interrupt() 中断一个线程时, 会出现以下两种情况 。在被中断线程中运行的代码以后可以轮询中断状态,看看它是否被请求停止正在做的事情。 若被中断的线程正在执行一个低级可中断阻塞方法(换句话说线程的状态是:WAITIMG或TIMED_WAITING时 ),例如 Thread.sleep()、Thread.join() 或 Object.wait(),那么它将取消阻塞并抛出