AQS
瞎折腾的小码农
这个作者很懒,什么都没留下…
展开
-
AQS的具体实现二:CountDownLatch与CyclicBarrier的具体实现
AQS的具体实现二:一、简介 CountDownLatch(线程计数器)与CyclicBarrier(可重复使用的栅栏),线程计数器和循环栅栏是两个用来进行同步的类,都是通过await方法来进行线程的阻塞,当执行线程数达到具体的数量时才会执行释放阻塞队列的方法,都是依赖于AbstractQueuedSynchronizer框架进行实现,存在于java.util.concurrent包下。二、区别 1、但CountDownLatch内部Sync通过实现AbstractQueuedSynchroni原创 2020-12-13 21:20:56 · 127 阅读 · 0 评论 -
AQS的具体实现一:ReentrantLock
AQS的具体实现一:ReentrantLock AQS的实现有多种形式,包括ReentrantLock、CountDownLatch、CyclicBarrier、ReentrantLock、Semaphore和ThreadPoolExecutor。ReentrantLock 可重入的独占锁:可重入指同一线程可以多次进入此锁,独占表示同一时刻只能够有一个线程持有该锁。其实现方式又有两种,分为公平和非公平锁。 非公平和公平锁:如下图,我们能看到其内部有两个实现类,公平锁与非公平锁。[外链图片转存失败,原创 2020-12-13 21:17:50 · 378 阅读 · 0 评论 -
AQS抽象队列同步框架
AQS一、AQS抽象队列同步框架:java中实现锁机制的形式有两种,一种是通过syschronized关键字来实现,另外一种既是通过抽象线程同步框架来实现。syschronized通过修改字节码加入监视器类来实现最终会调用cpu的锁来实现。而AQS是通过双向队列+volatile关键字来实现,相对syschronized其免去了字节码层面的修改,不用调用cpu的锁来实现,加锁释放锁更加的快捷,避免调用cpu锁导致的资源浪费。二、原理 1.属性 //共享锁标志 static final Node原创 2020-12-02 19:42:47 · 70 阅读 · 0 评论