并发JavaJava 并发锁
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/28 21:25
答案
AQS中,非公平和公平锁的区别主要在于tryAcquire方法中,非公平锁会直接使用CAS操作尝试将state从0改为1来获取锁,而公平锁则会先判断当前等待队列中是否有线程处于等待状态。 **<font style="color:rgb(51, 51, 51);">区别一:</font>**<font style="color:rgb(51, 51, 51);">非公平锁竞争锁资源会先去竞争锁,而公平锁只会在锁状态为0时才会竞争锁;</font> **<font style="color:rgb(51, 51, 51);">区别二:</font>**<font style="color:rgb(51, 51, 51);">公平锁查看队列里面是否有节点,有的话,加入队列,没有的话直接去抢锁;而非公平锁则是直接抢锁。</font>
相关题目(5)
Java 并发并发JavaJava 并发锁
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
有哪些支持并发的集合?共源 1
Java 并发并发JavaJava 并发
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(并发).md
knowledge_noteQuestion 106: AQS公平锁和非公平锁有什么区别?
Source answer: AQS中,非公平和公平锁的区别主要在于tryAcquire方法中,非公平锁会直接使用CAS操作尝试将state从0改为1来获取锁,而公平锁则会先判断当前等待队列中是否有线程处于等待状态。 **<font style="color:rgb(51, 51, 51);">区别一:</font>**<font style="color:rgb(51, 51, 51);">非公平锁竞争锁资源会先去竞争锁,而公平锁只会在锁状态为0时才会竞争锁;</font> **<font style="color:rgb(51, 51, 51);">区别二:</font>**<font style="color:rgb(51, 51, 51);">公平锁查看队列里面是否有节点,有的话,加入队列,没有的话直接去抢锁;而非公平锁则是直接抢锁。</font>
Reviewed answer: 区别主要在获取锁时是否先遵循队列顺序。非公平锁会直接CAS尝试把state从0改为1抢锁;公平锁会先判断等待队列中是否已有前驱节点,有则排队,无则再尝试获取锁。因此非公平锁吞吐量通常更高,公平锁更强调先来先得。