当应用 reentrantReadWriteLock 并且它被锁定时,如果另一个线程在执行另一个块时访问该锁会发生什么?(因此,在它到达 .unlock 之前)
方法被取消了吗?或者它已经停滞不前了?:O
当应用 reentrantReadWriteLock 并且它被锁定时,如果另一个线程在执行另一个块时访问该锁会发生什么?(因此,在它到达 .unlock 之前)
方法被取消了吗?或者它已经停滞不前了?:O
由于您说 ReentrantReadWriteLock,因此行为取决于您是在谈论获取与 ReadWriteLock 关联的读锁还是写锁。
只要没有写者,读锁就可以被多个线程同时持有。
线程将阻塞。如果有多个线程试图获取这个锁,它们都会被阻塞。当锁被释放时,等待池中的一个线程将获得锁,其余的仍将等待。查看公平锁和不公平锁之间的区别。
如果您不想阻止,您可以使用Lock.tryLock()
(无需等待即可尝试)或tryLock(long time, TimeUnit unit)
仅等待您指定的时间。