建设英文网站的请示,乐清网站建设yq01,十堰小程序开发,wordpress 如何登录文章目录 一、前置知识二、什么是AQS三、使用AQS框架的锁和同步器1、ReentrantLock2、ReentrantReadWriteLock3、CountDownLatch4、CyclicBarrier5、Semaphore#xff1a;信号量 四、锁和同步器的关系1、锁#xff1a;面向锁的使用者2、同步器#xff1a;面向锁的实现者 五、… 文章目录 一、前置知识二、什么是AQS三、使用AQS框架的锁和同步器1、ReentrantLock2、ReentrantReadWriteLock3、CountDownLatch4、CyclicBarrier5、Semaphore信号量 四、锁和同步器的关系1、锁面向锁的使用者2、同步器面向锁的实现者 五、AQS能做什么 一、前置知识
1可重入锁 2自旋思想 3LockSupport 4数据结构之双向链表 5设计模式之模板方法设计模式设计模式: 模板方法模式
二、什么是AQS
AQS全称是AbstractQueuedSynchronizer: 抽象队列同步器是阻塞锁和相关同步器工具的框架是整个JUC体系的基石通过内置的FIFO队列来完成资源获取线程的队列工作并通过一个int类型变量标识持有锁的状态
资源stateCLH队列双向队列
三、使用AQS框架的锁和同步器
1、ReentrantLock
1锁实现
公平锁FairSync非公平锁NonFairSync 2Condition多线程协调通讯类Condition维护了一个线程等待队列也是多线程间协调通信的工具是的某个线程一起等待某个条件满足条件才能唤醒唤醒后还需要重新竞争锁。
2、ReentrantReadWriteLock
3、CountDownLatch
1通过一个计数器来实现每当一个线程执行完成后计数器的值就减1当计数器的值为0时则表示所有的线程都执行完毕。 2await()调用await()方法的线程会被挂起它会等待直到count值为0才继续执行。 3await(long timeout, TimeUnit unit)等待一定的时间后count值还没有变为0的话就会继续执行。 4countDown()将count值减1
4、CyclicBarrier
5、Semaphore信号量
四、锁和同步器的关系
1、锁面向锁的使用者
定义了程序员和锁交互的使用层API隐藏了实现细节调用API即可。
2、同步器面向锁的实现者
统一规范并简化了锁的实现屏蔽了同步状态管理、阻塞线程队列和通知、唤醒机制等是一切锁和同步组件实现的公共基础部分。
五、AQS能做什么