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