中断比如其余线程向该线程打了个招呼,其余线程经过调用该线程的interrupt()方法对其进行中断操做。java
啥意思?this
如上图中所示,运行中的线程(main主线程)调用线程countThread的interrupt()方法,向countThread线程打了个“招呼”,对countThread线程作了中断操做。咱们看JDK源码中interrupt()方法的源码:spa
看注释:线程
// Just to set the interrupt flagcode
说的很是明白,对标识位进行了设置。就是将 interrupt flag 设置为true。将线程的中断标识位 interrupt flag 属性设置为了true。blog
什么叫能够理解为?看一下Thread的JDK源码,实际上找不到这个属性,因此若是有这个属性的话,恐怕也是在更底层(比JDK源码更底层)存在的。因此为了更好的理解,不妨想象有那么一个变量,用来标识线程是否被中断。源码
线程A能够经过调用线程B的class
public void interrupt() { if (this != Thread.currentThread()) checkAccess(); synchronized (blockerLock) { Interruptible b = blocker; if (b != null) { interrupt0(); // Just to set the interrupt flag b.interrupt(this); return; } } interrupt0(); }
方法来对线程B进行中断(能够理解为线程A经过调用线程B的interrupe()方法设置了线程B的中断标识位)。变量
线程A能够经过调用线程B的方法
public boolean isInterrupted() { return isInterrupted(false); }
方法来查看线程B是否被设置了中断标识位(中断标识位是否为true),而且不清除中断标识位。
线程A能够经过调用静态方法
public static boolean interrupted() { return currentThread().isInterrupted(true); }
方法来对当前线程的中断标识位进行复位。