深入理解JVM一节里说ReentrantLock等待可中断,体现在哪里,代码如何操作才能实现文中说的等待过程中放弃等待去处理其它事情,我只知道拥有锁的线程可以响应interrupt中断,是可被别人打断。
tryLock(long timeout, TimeUnit unit)应该说的是这个方法吧,设置等待锁的超时时间,超过时间则放弃等待,返回false,然后可以去处理其他事情
Reentrantlock内部通过Unsafe.park实现线程挂起,这个方法是本地方法,默认响应中断,reentrant响应中断的方式就是park被中断打断挂起后继续执行,抛出异常。不响应中断的方式是通过讲park放置在自旋里,中断被响应程序继续窒执行后因为自旋再次被park。两种方式代码类似都是在自旋里,只是一个抛异常一个不抛。