JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,本文主要讨论JUC里的ReentrantLock锁。
ReentrantLock入门和实践
发表于
|
分类于
Java
JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,本文主要讨论JUC里的ReentrantLock锁。
从jvm源码看synchronized底层原理
发表于
|
分类于
Java
前言
前面介绍了synchronized的用法和基本实现原理,synchronized是通过JVM内部的监视器锁(monitor)来实现的,但是监视器锁本质又是依赖于底层操作系统的Mutex Lock来实现的,而操作系统实现线程之间的切换就需要从用户态转换到内核态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么说synchronized效率低的原因。这种依赖于操作系统Mutex Lock所实现的锁我们称之为重量级锁,JDK1.6之后对synchronized做的种种优化,如锁粗化(Lock Coarsening)、锁消除(Lock Elimination)、轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)、适应性自旋(Adaptive Spinning)等技术来减少锁操作的开销,下面将从JVM源码层面查看这些优化的实现原理。
synchronized入门和实现原理
发表于
|
分类于
Java
Hexo博客源文件备份
发表于
|
分类于
博客