摘要: 简介 条件锁,指在获得锁之后,还需要达成某些条件后,才能继续执行的锁。且必须配合Lock一起使用,也就是说必须获得锁之后才可以调用condition.await()方法 源码分析 ReentrantLock 的条件锁使用的 AbstractQueuedSynchronizer 中的Condition 阅读全文
posted @ 2020-11-17 15:27 Admol 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 简介 ReentrantLock 是JDK 1.5开始提供的一种可重入的互斥锁,并且构造方法支持公平性参数。 源码分析 类结构体系 ReentrantLock实现了Lock接口: public class ReentrantLock implements Lock, java.io.Serializ 阅读全文
posted @ 2020-11-17 15:20 Admol 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 简介 AQS 全称是 AbstractQueuedSynchronizer,位于java.util.concurrent.locks 包下面,AQS 提供了一个基于FIFO的队列和维护了一个状态state变量赖表示状态,可以作为构建锁或者其他相关同步装置的基础框架。AQS 支持两种模式:共享模式 和 阅读全文
posted @ 2020-11-17 15:17 Admol 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 简介 synchronized关键字是Java里面最基本的同步手段,它经过编译之后,会在同步块的前后分别生成 monitorenter和 monitorexit字节码指令,这两个字节码指令都需要一个引用类型的参数来指明要锁定和解锁的对象;而直接使用 synchronized 关键字锁定方法时,生成的 阅读全文
posted @ 2020-11-17 15:10 Admol 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 高效并发是 JDK1.5 到JDK1.6 的一个重要改进,虚拟机在这个版本上实现了各种锁优化技术,比如:适应性自旋锁、锁消除、锁粗化、轻量级锁、偏向锁等,这些技术都是为了在线程之间更高效的共享数据,以及解决竞争问题。 自旋锁与自适应锁 同步(加锁)对性能最大的影响就是实现阻塞,挂起线程和恢复线程都需 阅读全文
posted @ 2020-11-17 15:08 Admol 阅读(232) 评论(0) 推荐(1) 编辑
摘要: Unsafe是什么 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等。不能被普通用户直接使用。 基本介绍 如下Unsafe源码所示,Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例, 阅读全文
posted @ 2020-11-17 15:07 Admol 阅读(407) 评论(0) 推荐(0) 编辑