并发编程
文章平均质量分 79
CosmosNi
做一个有理想的攻城狮
展开
-
JUC之Condition源码解析
定义 Condition主要是用来处理线程之间的通信,当满足某一条件时,唤醒其他的线程。 主要配合重入锁完成等待唤醒的操作。 案例 此demo定义了一个容量为5的数组。当数组容量达到容器最大容量时,写线程等待,读线程取走一个值,则唤醒写线程。同理,当容量为空时,读线程等待,写入一个值,则唤醒读线程。 public class ConditionTest { public static ...原创 2019-07-15 16:49:07 · 224 阅读 · 0 评论 -
JUC之同步组件核心AQS
定义 AQS是类AbstractQueuedSynchronizer的简称(以下均以AQS代替),提供了一种实现堵塞锁(独占锁)和一系列FIFO等待队列(共享锁)的同步框架。 独占锁:此代码有且只有一个线程能够执行,如ReentrantLock 共享锁:多个线程可同时获取锁,如Semaphore/CountDownLatch AQS源码 Node节点(线程状态维护) AQS中维护线程状态是通过一个...原创 2019-07-11 14:13:58 · 202 阅读 · 0 评论 -
JUC之重入锁ReentrantLock
定义 重入锁是一种递归无堵塞的同步机制。类似于synchronized,但是比synchronized更加的灵活,可自由选择加锁的位置。它有一个与锁相关的获取计数器,如果拥有锁的某个线程再次得到锁,那么获取计数器加1,并且锁需要被释放两次才能真正获得释放。 重入锁提供了两种加锁方式,公平锁以及非公平锁。默认是非公平锁。 公平锁表示线程获取锁的顺序是按照线程加锁的顺序来分配的,即先来先得的FIFO先...原创 2019-07-11 15:22:18 · 172 阅读 · 0 评论