lockinterruptibly专题

ReentrantLock的lockInterruptibly()理解

ReentrantLock锁有几种:lock、tryLock、tryLock(long timeout, TimeUnit unit)、lockInterruptibly。 lock 阻塞等待获取锁,优先考虑获取锁,待获取锁成功后,才响应中断。 lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。  tryLock() 是一个有返回值的方法,试图申请一个锁

ReentrantLock的三种获取锁Lock,tryLock,lockInterruptibly的区别

重入锁有三种获取锁的方式,本文就是来说明三种方式的异同点的. lock public void lock() 获得锁。 如果锁没有被另一个线程占用并且立即返回,则将锁定计数设置为1。如果当前线程已经保持锁定,则保持计数增加1,该方法立即返回。如果锁被另一个线程保持,则当前线程将被禁用以进行线程调度,并且在锁定已被获取之前处于休眠状态,此时锁定保持计数被设置为1。 tryLock boo

lock.lock()和lock.lockInterruptibly()的区别

一开始容易搞混两者的区别,看官方的说明看的也有点晕晕的。通过实验了几次,终于明白了,其实两者的区别就一句话: lock.lock()和lock.lockInterruptibly()在等待获取锁的时候,线程的interrupt()无法打断lock.lock(),但是可以打断lock.lockInterruptibly()。  这句话有个非常重要的场景,就是这俩方法都是在等待获取锁的时候,才会有

Java中Lock,tryLock,lockInterruptibly 区别

先说结论: lock : 在锁上等待,直到获取锁; tryLock:立即返回,获得锁返回true,没获得锁返回false; tryInterruptibly:在锁上等待,直到获取锁,但是会响应中断,这个方法优先考虑响应中断,而不是响应锁的普通获取或重入获取。  分别对应无限制锁,定时锁(通过while可以作为轮询锁),可中断锁。 ReentrantLock 锁有好几种,