Java中如何利用AQS构建一个基于AQS的同步器实例?

更新于
2026-10-11 12:19:07
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1341个文字,预计阅读时间需要6分钟。

Java中如何利用AQS构建一个基于AQS的同步器实例?

前文提到了这个多,我们可以自己尝试实现一个同步器,简单参考一下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分钟。

Java中如何利用AQS构建一个基于AQS的同步器实例?

前文提到了这个多,我们可以自己尝试实现一个同步器,简单参考一下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方法来控制同步。

阅读全文