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博客源文件备份
发表于
|
分类于
博客