Skip to content

Commit 9eb609f

Browse files
authored
Update java关键字---synchronized.md
1 parent a4bc6c4 commit 9eb609f

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

04.彻底理解synchronized/java关键字---synchronized.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,16 @@ CAS的实现需要硬件指令集的支撑,在JDK1.5后虚拟机才可以使
151151

152152
## 3.2 Java对象头 ##
153153

154-
在同步的时候是获取对象的monitor,即获取到对象的锁。那么对象的锁怎么理解?无非就是类似对对象的一个标志,那么这个标志就是存放在Java对象的对象头。Java对象头里的Mark Word里默认的存放的对象的Hashcode,分代年龄和锁标记位。32为JVM Mark Word默认存储结构为(注:java对象头以及下面的锁状态变化摘自《java并发编程的艺术》一书,该书我认为写的足够好,就没在自己组织语言班门弄斧了):
154+
在同步的时候是获取对象的monitor,即获取到对象的锁。那么对象的锁怎么理解?无非就是类似对对象的一个标志,那么这个标志就是存放在Java对象的对象头。Java对象头里的
155+
Word里默认的存放的对象的Hashcode,分代年龄和锁标记位。32为JVM Mark Word默认存储结构为(注:java对象头以及下面的锁状态变化摘自《java并发编程的艺术》一书,该书我认为写的足够好,就没在自己组织语言班门弄斧了):
155156

156-
![Mark Word存储结构.png](Mark Word存储结构.png)
157+
![Mark Word存储结构](Mark Word存储结构.png)
157158

158159
如图在Mark Word会默认存放hasdcode,年龄值以及锁标志位等信息。
159160

160161
Java SE 1.6中,锁一共有4种状态,级别从低到高依次是:**无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态**,这几个状态会随着竞争情况逐渐升级。**锁可以升级但不能降级**,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率。对象的MarkWord变化为下图:
161162

162-
![Mark Word状态变化.png](Mark Word状态变化.png)
163+
![Mark Word状态变化](Mark Word状态变化.png)
163164

164165

165166

0 commit comments

Comments
 (0)