AQS
2021-07-28 15:03:52 1 举报
AQS底层原理实现
作者其他创作
大纲/内容
AQS对资源的共享方式有两种:1.独占式:只有一个线程能执行如 Reentrantlock公平锁,按照队列排队非公平锁,无视队列直接抢锁2.共享式:多个线程可同时执行,如Semaphore/CountDownLatch。Semaphore、CountDownLatch、 CyclicBarrier、ReadWriteLock
基于reentrantlock的还有一些同步队列1.ArrayBlockingQueue2.DelayQueue3.LinkedBlockingDeque4.LinkedBlockingQueue5.TimerQueue
AQS有几种共享方式?
ReadWriteLock为什么要有读写锁,因为一个锁在读,一个锁在写,这样可能会读写不一致所以加锁。但也有A读,B也在读这样不会发生读写不一致也还是加锁了,降低了程序的性能。所以出现了读写锁。
ReentrantLock(可重入锁)实现原理:因为reentrantlock是aqs框架下 可重入性基于int类型的state值加锁就把state+1解锁就把state-1
AQS原理
AQS全称 AbstractQueuedSynchronizer
AQS是当前共享资源空闲,那么请求资源的线程设置为工作线程,并且锁定共享资源。如果共享资源被占用,那么就用一个虚拟的双向队列维护后来的请求线程,通过双向队列的node节点实现锁的分配。AQS同步状态是根据一个用Volatile修饰的int类型的state值,这个值通过cas的方式去修改。底层用的是模板方法模式做的同步器设计。
ReentrantReadWriteLock 是ReadWriteLock的接口具体实现他实现了读写分离,读是共享,写是独占。读和读不会互斥,读和写,写和写,写和读互斥(1)公平选择性:支持非公平(默认)和公平的锁获取方式,吞吐量还是非公平优于公平。(2) 重进入:读锁和写锁都支持线程重进入。(3) 锁降级:遵循获取写锁、获取读锁再释放写锁的次序,写锁能够降级成为读锁。
AQS是一个构建锁和同步器的框架如:ReentrantLock,Semaphore,FutureTask,SynchronousQueue
什么是AQS
0 条评论
下一页