宁可枝头抱香死,何曾吹落北风中。这篇文章主要讲述完整版 笔记汇总 自己用AQS实现一个简单的线程协作器相关的知识,希望能为你提供帮助。
对java并发常见的工具类进行从使用到原理的详解,
【完整版 笔记汇总 自己用AQS实现一个简单的线程协作器】包括CAS+AQS+ThreadLocal+ConcurrentHashMap+线程池+各种锁+并发综合实战项目
下载:??Downlod??
提取码:9voy
package aqs;
import java.util.concurrent.locks.AbstractQueuedSynchronizer;
/**
* 描述:自己用AQS实现一个简单的线程协作器
*/
public class OneShotLatch
private final Sync sync = new Sync();
public void signal()
sync.releaseShared(0);
public void await()
sync.acquireShared(0);
private class Sync extends AbstractQueuedSynchronizer
@Override
protected int tryAcquireShared(int arg)
return (getState() == 1) ? 1 : -1;
@Override
protected boolean tryReleaseShared(int arg)
setState(1);
return true;
public static void main(String[] args) throws InterruptedException
OneShotLatch oneShotLatch = new OneShotLatch();
for (int i = 0; i < 10; i++)
new Thread(new Runnable()
@Override
public void run()
System.out.println(Thread.currentThread().getName()+"尝试获取latch,获取失败那就等待");
oneShotLatch.await();
System.out.println("开闸放行"+Thread.currentThread().getName()+"继续运行");
).start();
Thread.sleep(5000);
oneShotLatch.signal();
new Thread(new Runnable()
@Override
public void run()
System.out.println(Thread.currentThread().getName()+"尝试获取latch,获取失败那就等待");
oneShotLatch.await();
System.out.println("开闸放行"+Thread.currentThread().getName()+"继续运行");
).start();
推荐阅读
- 微服务架构 | 11. 分布式事务 #yyds干货盘点#
- 百度爱番番实时CDP建设实践
- 如何在 JMeter 中使用 MQTT 插件
- 基于改进SSD的车辆小目标检测方法
- #yyds干货盘点#Python图像处理,cv2模块,OpenCV实现边缘检测
- Flutter 状态管理(详细解释一切#yyds干货盘点#)
- #yyds干货盘点# 数据结构与算法学习
- 动力节点Spring框架学习笔记-王鹤IOC控制反转
- MySQL教程mysql面试题总结_上