并发
文章平均质量分 54
凌晨向燕京
这个作者很懒,什么都没留下…
展开
-
Semaphore源码解析
文章目录内部类及构造器:重要方法:获取许可:释放许可Semaphore简介:线程上的信号量机制。通过 acquire() 获取一个许可,没有便阻塞等待,release() 释放一个许可。原理:实现又是基于AQS的共享锁。并且支持公平和非公平其实就是初始化了一个AQS上的state,每次acquire就是去state上尝试减一,每次release就是去state上加一,内部类及构造器:维护了三个内部类。经典的aqs写法公平和非公平两种都有对应的实现构造器: //非公平 pub原创 2021-01-31 17:08:08 · 125 阅读 · 0 评论 -
CyclicBarrier源码
文章目录主要的成员变量和构造方法:重要方法:CyclicBarrier是一种同步工具,它允许一组线程在到达一个公共的屏障点时阻塞等待,直到最后一个线程到达屏障点,屏障才能开启,此时所有被阻塞线程才能被唤醒从而继续执行。首先要清楚的是CyclicBarrier主要是基于reentrantlock的条件等待主要的成员变量和构造方法: /** The lock for guarding barrier entry */ private final ReentrantLock lock = n原创 2021-01-31 14:34:05 · 132 阅读 · 0 评论 -
CountDownLatch源码解析
文章目录内部类awaitcountdowncountdownlatch是基于AQS的实现,在学习之前必须先懂AQS共享锁的原理。内部类countdownlatch里维护了一个内部类Sync继承了AQS,这和reentrantlock系列类似,可以看出AQS的使用一般都是重写两组方法tryAcquire/tryrelease 以及tryAcquireShared/tryreleaseshared这两组方法选一组实现就可以了 private static final class Sync ext原创 2021-01-27 11:24:12 · 93 阅读 · 0 评论 -
并发——synchronized-理解
文章目录安全问题的由来synchronize解决局部变量的线程安全问题线程安全的类:Monitorsynchronize的进阶原理轻量级锁锁膨胀自旋优化偏向锁安全问题的由来java中的语句可能对应多个字节码指令的执行。但是在线程的上下文切换的过程中,却不是原子地,所以我们需要考虑线程安全的问题看一段代码 public static void main(String[] args) throws InterruptedException { Thread t1 = new Thr原创 2020-08-24 13:51:07 · 171 阅读 · 0 评论