当应用reentrantReadWriteLock并被锁定时,如果另一个线程在已经执行另一个块的同时访问Lock会发生什么? (因此,在到达.unlock之前)
该方法被取消了吗?还是停滞了? :O
最佳答案
由于您说的是ReentrantReadWriteLock,所以行为取决于您是在谈论获取与ReadWriteLock关联的读取锁还是写入锁。
如果您试图获取写锁,则将被阻止,直到所有持有者释放该锁(无论是读锁还是写锁)
如果您试图获取读锁并且没有写锁的持有人,那么即使有其他读锁持有人,您也将始终能够获取它。
如果您试图获取读锁并且有写锁的持有者,那么您将被阻止,直到写锁持有者释放写锁为止。
只要没有写程序,读锁就可以由多个线程同时持有。
关于java - 当多个线程想要访问ReentrantReadWriteLock时会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7124520/