概述
Java线程中断机制是线程间的一种协作机制,通常用于一条线程通知另外一条线程终止。被通知终止的线程并不是马上终止,而是在合适的时刻对通知进行响应并安全终止
核心方法
thread.interrupt()
将线程thread
的中断状态标记为中断thread.isInterrupted()
获取线程thread
的中断状态Thread.interrupted()
获取当前线程的中断状态,且将当前线程的中断状态标记为非中断
响应中断
循环检查响应
public class InterruptibleThread extends Thread {
@Override
public void run() {
// 程序定期检查中断状态并响应
while (!Thread.currentThread().isInterrupted()) {
// do something
}
}
}
因调用以下方法进入waiting或timed wating状态的线程,可响应中断,响应方式为抛出InterruptedException
,并把当前线程的中断状态标记为非中断
object.wait()
object.wait(long)
thread.join()
thread.join(long)
Thread.sleep(long)
因调用以下方法进入waiting或timed wating状态的线程,可响应中断,响应方式为直接从方法返回,不抛出异常,当前线程的中断状态保持为中断
LockSupport.park()
LockSupport.parkNanos(long)
LockSupport.parkUntil(long)
线程处于blocked状态的阻塞(等待监视器锁)或处于runnable状态的阻塞(等待操作系统I/O资源)不会响应中断
PREVIOUSCSRF攻击原理