本文主要是介绍ReentrantLock的lockInterruptibly()理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ReentrantLock锁有几种:lock、tryLock、tryLock(long timeout, TimeUnit unit)、lockInterruptibly。
lock 阻塞等待获取锁,优先考虑获取锁,待获取锁成功后,才响应中断。
lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。
tryLock() 是一个有返回值的方法,试图申请一个锁,在成功获得锁后返回true,否则,立即返回false,而且线程可以立即离开去做其他的事情。
tryLock(long timeout, TimeUnit unit) 是一个具有超时参数的尝试申请锁的方法,阻塞时间不会超过给定的值;如果成功则返回true
ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 ReentrantLock.lock方法不允许Thread.interrupt中断,即使检测到Thread.isInterrupted,一样会继续尝试获取锁,失败则继续休眠。只是在最后获取锁成功后再把当前线程置为interrupted状态,然后再中断线程。
lockInterruptibly 代码可参考:
https://blog.csdn.net/zengmingen/article/details/53260650
这篇关于ReentrantLock的lockInterruptibly()理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!