一、Lock.lock() 不可被打断

被打断时不是抛出异常

image.png

被唤醒后马上调用interruped方法

image.png

interruped 清除打断标记位并返回

image.png
所以 lock被中断唤醒后,会马上清除中断标记位,进入下一次CAS,然后又阻塞到park这一行。


二、Lock.lockInterruptibly 可以被打断

image.png
image.png

被打断是会抛出异常

image.png