大家好,我是小马哥。最近并发编程是大厂面试中重点考察的问题。今天我们来探讨一下AQS相关的面试技巧。毕竟此类问题回答的好坏会在很大程度上影响我们面试的得分。
1. AQS在java中的使用
给代码加锁,是java中处理并发问题的重要手段。
java中的很多锁都是基于抽象类AQS(AbstractQueuedSynchronizer)实现的。
如下表所示:
2. AQS的实现机制
AQS提供了实现锁的机制,即CLH队列,同时通过ConditionObject实现了条件等待链表。
其中CLH队列如下:
-
AQS使用
private volatile int state;
表示同步状态 -
通过内置的FIFO队列完成线程的排队
-
使用CAS对state进行修改。
3. AQS主要方法
AQS对外提供的用于实现锁的方法如下:
基于AQS可以实现公平锁和非公平锁,互斥锁和共