Java中如何利用AQS构建一个基于AQS的同步器实例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1341个文字,预计阅读时间需要6分钟。
前文提到了这个多,我们可以自己尝试实现一个同步器,简单参考一下ReentrantLock这个类的实现方式,我们就可以简单实现一个不可重入的锁。
一、简单分析ReentrantLock的结构
ReentrantLock内部使用了一个同步器(Sync)来管理锁的获取和释放。Sync继承自AbstractQueuedSynchronizer(AQS),这是JDK中用于构建并发工具的基础框架。
ReentrantLock的主要结构包括:
1. Sync类:内部类,用于封装锁的实现逻辑,继承自AQS。
2.Sync的内部类:Node,表示等待锁的线程节点。
3.Sync的内部类:NonfairSync,继承自Sync,实现非公平锁的同步策略。
4.Sync的内部类:FairSync,继承自Sync,实现公平锁的同步策略。
简单实现一个不可重入的锁:
java
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class SimpleLock { private final Lock lock=new ReentrantLock();
public void lock() { lock.lock(); }
public void unlock() { lock.unlock(); }}
这个简单的锁封装了ReentrantLock的实现,可以直接使用ReentrantLock提供的lock和unlock方法来控制同步。
本文共计1341个文字,预计阅读时间需要6分钟。
前文提到了这个多,我们可以自己尝试实现一个同步器,简单参考一下ReentrantLock这个类的实现方式,我们就可以简单实现一个不可重入的锁。
一、简单分析ReentrantLock的结构
ReentrantLock内部使用了一个同步器(Sync)来管理锁的获取和释放。Sync继承自AbstractQueuedSynchronizer(AQS),这是JDK中用于构建并发工具的基础框架。
ReentrantLock的主要结构包括:
1. Sync类:内部类,用于封装锁的实现逻辑,继承自AQS。
2.Sync的内部类:Node,表示等待锁的线程节点。
3.Sync的内部类:NonfairSync,继承自Sync,实现非公平锁的同步策略。
4.Sync的内部类:FairSync,继承自Sync,实现公平锁的同步策略。
简单实现一个不可重入的锁:
java
import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class SimpleLock { private final Lock lock=new ReentrantLock();
public void lock() { lock.lock(); }
public void unlock() { lock.unlock(); }}
这个简单的锁封装了ReentrantLock的实现,可以直接使用ReentrantLock提供的lock和unlock方法来控制同步。

