当应用reentrantReadWriteLock并且它被锁定时,如果另一个线程在已经执行另一个块时访问Lock会发生什么? (因此,在它到达.unlock之前)
方法被取消了吗?或许它停滞不前? :o
答案 0 :(得分:2)
由于你说的是ReentrantReadWriteLock,行为取决于你是在谈论读锁还是与ReadWriteLock相关的写锁。
只要没有编写器,读锁就可以由多个线程同时保存。
答案 1 :(得分:1)
答案 2 :(得分:1)
该线程将被阻止。如果多个线程尝试获取此锁定,则所有线程都将被阻止。释放锁定时,等待池中的一个线程将获得锁定,其余线程仍将等待。请参阅公平和不公平锁定之间的difference。
答案 3 :(得分:0)
如果您不想阻止,可以使用Lock.tryLock()
(无需等待尝试)或tryLock(long time, TimeUnit unit)
,只会在您指定的时间内等待。