interrupt
原理
interrupt是Thread中的一个方法, 其本质是将线程中的中断标志设置为true, 而不是直接中断. 设置后, 根据线程的状态而有不同的后续操作....如果, 线程的当前状态处于非阻塞状态, 那么仅仅是线程的中断标志被改为了true, 一旦线程调用了wait, join, sleep方法中的一种, 立马抛出InterruptedException, 并将中断标志重置...如果线程当前状态处于阻塞状态, 那么会有三种情况之一:
如果是wait, join, sleep三个方法引起的阻塞, 那么线程的中断标志会重置为false, 并且抛出一个InterruptedException....
interrputed()
Interrupted()和isInterrupted()都可以返回中断标志位的值, 不同的是, 前者还会将中断标志位重置为false....中断状态 -> InterruptedException异常的转换:
如果线程是中断状态, 那么抛出InterruptedException异常:
if(Thread.interrupted()) {