文章分页功能可以快速定位到想看的内容哦~
aqs原理:是一个用于构建锁和同步器的框架,它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题,在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。
通过status标识锁 ReentrantLock使用排他锁。AQS的status0表示加锁,thread是当前获取锁的线程。该锁时可重入锁,所以status0。CountDownLatch 使用共享锁。
它继承了AQS框架的内部类,实现了插销式同步器的具体功能。在Sync类内部,有两个重要的内部类NonfairSync和FairSync,它们分别实现了非公平锁和公平锁的具体实现。
首先尝试获取资源,如果当前状态为0,表示没有线程占有锁,设置该线程为独占模式,使用CAS设置状态,否则如果当前线程和独占线程是一个线程,修改状态值,否则返回false。
当第一次调用await()对线程进行阻塞时,当前线程会首先调用park()进入阻塞,并且加入到条件等待队列中。当某个线程调用此Condition对象的signal时,等待队列中的firstWaiter(第一个阻塞对象)会被加入到AQS锁的CLH队列中。
正在加载中...
海报生成中...
生成失败