java中的线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是被中断的线程根据中断状态自行处理。
void interrupt()方法:
中断线程,例如当线程A运行时,线程B可以调用线程A的interrupt()方法来设置线程A的中断标志为true并立即返回。设置标志仅仅是设置标志,线程A实际上并没有被中断,它会继续往下执行。如果线程A因为调用了wait系列的函数,join方法或者sleep方法而被阻塞挂起,这时候若是线程B调用线程A的interrupt()方法,线程A会在调用这些方法的地方抛出InterruptedException异常而返回。
boolean isInterrupted()方法:
检查当前线程是否被中断,如果是返回true,否则返回false
isInterrupted()的内部
public static boolean interrupted(){
return currentThread.isInterrupted(false);
}
false表示不清除中断状态
boolean interrupted()方法:
检测当前线程是否中断,如果是返回true,否则返回false。与isInterrupted不同的是,该方法如果发现当前线程被中断,则会清除中断标志,也就是如果第一次调用是true,再次调用返回的就是false,因为之前的中断状态被清除了。
并且该方法是static方法,可以通过Thread类直接调用。
目前已知的Thread类的静态方法有sleep(),yield(),interrupted()
interrupted的内部
public static boolean interrupted(){
return cu