锁优化

Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么Synchronized效率低的原因。因此,这种依赖于操作系统Mutex Lock所实现的锁我们称之为“重量级锁”。

JDK中对Synchronized做的种种优化,其核心都是为了减少这种重量级锁的使用。

为了减少获得锁和释放锁所带来的性能消耗,提高性能,JDK使用了锁消除、锁膨胀等策略,并引入了“轻量级锁”和“偏向锁”的概念来减少重量级锁的使用。

posted @ 2019-01-27 22:10  robin·张  阅读(135)  评论(0编辑  收藏  举报