并发JavaJava 并发锁
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/28 21:25
答案
写锁可以降级为读锁,但读锁不能升级为写锁。因为写锁时独占锁,如果读锁升级为写锁就会引起线程争夺,影响性能,而且可能导致死锁。比如两个线程都想升级,但都需要等待对方释放锁。 当一个线程拥有写锁的时候,再去获得读锁,是可以获得的,这时候会发生写锁的锁降级。锁降级机制可以保证自己线程的写操作一定 是对自己可见、可用的。如果不能获得读锁,需要先释放写锁,再获得读锁,那么可能再获得读锁前,被其他线程抢占修改,就会导致问题。
相关题目(5)
Java 并发并发JavaJava 并发锁
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
有哪些支持并发的集合?共源 1
Java 并发并发JavaJava 并发
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(并发).md
knowledge_noteQuestion 60: 读锁为什么不能升级为写锁?
Source answer: 写锁可以降级为读锁,但读锁不能升级为写锁。因为写锁时独占锁,如果读锁升级为写锁就会引起线程争夺,影响性能,而且可能导致死锁。比如两个线程都想升级,但都需要等待对方释放锁。 当一个线程拥有写锁的时候,再去获得读锁,是可以获得的,这时候会发生写锁的锁降级。锁降级机制可以保证自己线程的写操作一定 是对自己可见、可用的。如果不能获得读锁,需要先释放写锁,再获得读锁,那么可能再获得读锁前,被其他线程抢占修改,就会导致问题。
Reviewed answer: 因为写锁是独占锁,若允许多个持有读锁的线程同时升级为写锁,容易互相等待并导致死锁,同时也会带来更复杂的竞争与性能问题。相对地,写锁可以安全降级为读锁以保证可见性和连续性。