管理博文 heima并发-----75-96---第四章

Monitor是操作系统的对象。在对象的对象头用指针关联的。

管理博文 heima并发-----75-96---第四章_第1张图片

轻量级锁是指向锁记录的指针,在栈内存里面的。

基本的原理:

管理博文 heima并发-----75-96---第四章_第2张图片

---75---

字节码角度的Monitor

---76-78---

每个线程的栈帧都会包含一个锁记录的信息。

管理博文 heima并发-----75-96---第四章_第3张图片

左边的是栈帧的锁对象分为:存的是加锁对象的Mark word和对象的指针。

轻量级锁升级为重量级锁:

1.加轻量级锁时候cas替换失败

2.解锁

---79---

锁的膨胀:

重量级锁的地址后两位就变成10了。

---80---

自旋优化。

管理博文 heima并发-----75-96---第四章_第4张图片

---81---

偏向锁。

代码验证偏向锁的结论:

管理博文 heima并发-----75-96---第四章_第5张图片

管理博文 heima并发-----75-96---第四章_第6张图片只是表示启用还是禁用。

管理博文 heima并发-----75-96---第四章_第7张图片

对象创建之后就有偏向锁了。

注意优先加的是偏向锁。

管理博文 heima并发-----75-96---第四章_第8张图片

注意第三行,以后就存这这个id了,这就是偏向锁得名的原因。

默认是偏向锁。

结论:优先级是有偏向锁就采用的是偏向锁,如果其他线程用的话就撤销偏向锁,用轻量级锁,有竞争就膨胀为重量级锁。

关于hashCode:

管理博文 heima并发-----75-96---第四章_第9张图片

加的是轻量级锁。

重量级锁的hashcode:存在Monitor对象,解锁会还原回来。

轻量级锁的hashcode:存在线程栈帧的锁记录。

---82-83---

偏向锁和升级轻量级锁有一个前提是错开的,竞争的话为重量级锁。

管理博文 heima并发-----75-96---第四章_第10张图片

管理博文 heima并发-----75-96---第四章_第11张图片

解读:

1.处于可偏向的状态。

2.加锁,前面有线程的id了。

3.解锁,线程的id依然保留。

4.初始化依然是偏向锁不变。

5.唤醒t2线程执行,本来线程是偏向t1线程的,现在t2线程也想来,偏向锁失效,变为轻量级锁,变成锁记录的指针指向栈。

6.变为不可偏向的。

---84---

代码:

管理博文 heima并发-----75-96---第四章_第12张图片

撤销的次数多了 会偏向的t2中去。阈值是20。

管理博文 heima并发-----75-96---第四章_第13张图片

之后变为轻量级锁,然后变为normal。

管理博文 heima并发-----75-96---第四章_第14张图片

---36---

代码:

管理博文 heima并发-----75-96---第四章_第15张图片

管理博文 heima并发-----75-96---第四章_第16张图片

管理博文 heima并发-----75-96---第四章_第17张图片

管理博文 heima并发-----75-96---第四章_第18张图片

管理博文 heima并发-----75-96---第四章_第19张图片

管理博文 heima并发-----75-96---第四章_第20张图片

管理博文 heima并发-----75-96---第四章_第21张图片

第40个变为不可偏向状态。

---37---

锁消除的优化。

---38---

wait和notify的小故事。

waitSet和EntryList。

---39---

代码:

管理博文 heima并发-----75-96---第四章_第22张图片

管理博文 heima并发-----75-96---第四章_第23张图片

---40-41---

---

管理博文 heima并发-----75-96---第四章_第24张图片

管理博文 heima并发-----75-96---第四章_第25张图片

---42-43---

代码:

管理博文 heima并发-----75-96---第四章_第26张图片

---93---

管理博文 heima并发-----75-96---第四章_第27张图片

---94---

管理博文 heima并发-----75-96---第四章_第28张图片

---95---

最后的解决方案:

管理博文 heima并发-----75-96---第四章_第29张图片

---96---

你可能感兴趣的:(heima并发,并发)