多线程synchronized中,偏向锁-轻量级锁-重量级锁的优化机制是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2255个文字,预计阅读时间需要10分钟。
“@TOCsynchronized 锁优化机制这是属于我们编译器优化的一部分,涉及到 JVM 和操作系统的优化策略,以及一些细节。
这些内容其实白说了:如果我们不需要去实现 JVM,那么‘
@TOC
synchronized 的 锁优化的机制
这也是属于我们编译器优化,以及说 JVM ,操作系统,它们的一些优化策略所涉及到一些小细节。
这些东西,其实说白了:如果我们不需要去实现 JVM 和 编译器,就并不需要去理解。
但奈何,现在都卷到这个份上,那我们就学吧
基本特点
结合上面的锁策略, 我们就可以总结出
Synchronized 具有以下特性(只考虑 JDK 1.8):
1、 开始时是乐观锁, 如果锁冲突频繁, 就转换为悲观锁.
2、 开始是轻量级锁实现, 如果锁被持有的时间较长, 就转换成重量级锁.
3、 实现轻量级锁的时候大概率用到自旋锁策略
4、 是一种不公平锁
5、 是一种可重入锁
6、 不是读写锁
7、实现重量级锁的时候大概率会用到 挂起等待锁。
本文共计2255个文字,预计阅读时间需要10分钟。
“@TOCsynchronized 锁优化机制这是属于我们编译器优化的一部分,涉及到 JVM 和操作系统的优化策略,以及一些细节。
这些内容其实白说了:如果我们不需要去实现 JVM,那么‘
@TOC
synchronized 的 锁优化的机制
这也是属于我们编译器优化,以及说 JVM ,操作系统,它们的一些优化策略所涉及到一些小细节。
这些东西,其实说白了:如果我们不需要去实现 JVM 和 编译器,就并不需要去理解。
但奈何,现在都卷到这个份上,那我们就学吧
基本特点
结合上面的锁策略, 我们就可以总结出
Synchronized 具有以下特性(只考虑 JDK 1.8):
1、 开始时是乐观锁, 如果锁冲突频繁, 就转换为悲观锁.
2、 开始是轻量级锁实现, 如果锁被持有的时间较长, 就转换成重量级锁.
3、 实现轻量级锁的时候大概率用到自旋锁策略
4、 是一种不公平锁
5、 是一种可重入锁
6、 不是读写锁
7、实现重量级锁的时候大概率会用到 挂起等待锁。

