随笔分类 - Java
摘要:简介 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 支持两种模式:共享模式 和
阅读全文
摘要:Unsafe是什么 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等。不能被普通用户直接使用。 基本介绍 如下Unsafe源码所示,Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例,
阅读全文