Java 线程的中断机制
简单回顾一下 Java 的中断机制
Java 中的线程 Thread 有以下三个方法
public void interrupt()
1 | public void interrupt() { |
public static boolean interrupted()
1 | public static boolean interrupted() { |
isInterrupted()
1 | public boolean isInterrupted() { |
方法 | 作用 |
---|---|
interrupt() | 中断线程 当线程处于 Runnable 状态时,调用该方法中断该线程,会使得 isInterrupted() 方法返回 true 当线程处于 Block 或者 Wait 阻塞状态时,如果是通过 thread.wait(),thread.join(),Thread.sleep() 方法处于阻塞状态时,则会抛出 InterruptedException,如果是通过 LockSupport.park() 方法使线程处于阻塞状态,则不会抛出 InterruptedException |
interrupted() | 静态方法,作用于调用该方法的当前线程,这个方法的命名用的是一般过去时,所以返回的值代表的是「线程是否被中断过」并且会清除掉该线程的中断状态 |
isInterrupted() | 公开方法,作用于调用该方法的线程对象,返回值代表的是「调用该方法的线程是否被中断过」,但不会清除该线程的中断状态 |