LockSupport与线程中断

发布时间 2023-05-28 21:08:19作者: 余明星

1 LockSupport是什么

LockSupport是用来创建锁和其他同步类的基本阻塞原语。

park方法可以阻塞线程,unpark方法可以唤醒线程。与object的wait和notify不同的是,不需要synchonized的限制,没有先后顺序的限制。

2 线程中断

线程不应该被其他线程中断,应该自己中断。

线程的三个中断方法

interrupt方法:通知目标线程中断,也就是设置目标线程的中断标记为ture,不做其他处理的话,线程还会继续运行。

isInterrupted方法: 判断线程是否中断

interrupeted方法:是静态方法,返回线程当前的中断状态,并且会清除中断标记。

 

3细节点

如果线程处于被阻塞状态(例如处于sleep, wait, join 等状态),在别的线程中调用当前线程对象的interrupt方法,
那么线程将立即退出被阻塞状态,并抛出一个InterruptedException异常。

try cache时,线程中断标记会被清除,如果需要中断,需要进行Thread.currentThread().interrupt(),重新设置中断标记。

 

上图