随笔分类 - 源码分析
摘要:Phaser是什么? 比 CyclicBarrier和CountDownLatch灵活在哪儿?
阅读全文
摘要:如何使用工具类线程安全的交换两个线程之间的数据
阅读全文
摘要:CyclicBarrier 是什么?与CountDownLatch的区别有哪些?
阅读全文
摘要:Spring 事件监听机制及原理分析
阅读全文
摘要:简介 CountDownLatch 是JDK1.5 开始提供的一种同步辅助工具,它允许一个或多个线程一直等待,直到其他线程执行的操作完成为止。在初始化的时候给定 CountDownLatch 一个计数,调用await() 方法的线程会一直等待,其他线程执行完操作后调用countDown(),当计数减
阅读全文
摘要:简介 Semaphore 又名计数信号量,从概念上来讲,信号量初始并维护一定数量的许可证,使用之前先要先获得一个许可,用完之后再释放一个许可。信号量通常用于限制线程的数量来控制访问某些资源,从而达到单机限流的目的,比如SpringCloud 中的Zuul 组件用的是 Hystrix 的信号量(sem
阅读全文
摘要:简介 StampedLock 是JDK1.8 开始提供的一种锁, 是对之前介绍的读写锁 ReentrantReadWriteLock 的功能增强。StampedLock 有三种模式:Writing(读)、Reading(写)、Optimistic Reading(乐观度),StampedLock 的
阅读全文
摘要:简介 ReentrantReadWriteLock 从字面意思可以看出,是和重入、读写有关系的锁,实际上 ReentrantReadWriteLock 确实也是支持可重入的读写锁,并且支持公平和非公平获取锁两种模式。 为什么会出现读写锁? 普通锁可以保证共享数据在同一时刻只被一个线程访问,就算有多个
阅读全文
摘要:简介 条件锁,指在获得锁之后,还需要达成某些条件后,才能继续执行的锁。且必须配合Lock一起使用,也就是说必须获得锁之后才可以调用condition.await()方法 源码分析 ReentrantLock 的条件锁使用的 AbstractQueuedSynchronizer 中的Condition
阅读全文
摘要:简介 ReentrantLock 是JDK 1.5开始提供的一种可重入的互斥锁,并且构造方法支持公平性参数。 源码分析 类结构体系 ReentrantLock实现了Lock接口: public class ReentrantLock implements Lock, java.io.Serializ
阅读全文
摘要:简介 AQS 全称是 AbstractQueuedSynchronizer,位于java.util.concurrent.locks 包下面,AQS 提供了一个基于FIFO的队列和维护了一个状态state变量赖表示状态,可以作为构建锁或者其他相关同步装置的基础框架。AQS 支持两种模式:共享模式 和
阅读全文