这里既然说到了interrupt(),那么就不得不提另外两个函数:interrupted()和isInterrupted。看下这两个函数的作用:
public static boolean interrupted()
测试当前线程是否已经中断,并且清除线程的中断状态。
public boolean isInterrupted()
测试线程是否已经中断,线程的中断状态不受该方法的影响。
这两个函数的返回值含义:
如果当前线程已经中断,则返回 true;否则返回 false。
其实当线程阻塞并且调用了interrupt()时,不止是抛出InterruptedException异常还会调用interrupted()来清除线程的中断状态,所以在catch里面调用isInterrupted()会返回false。