目录
- 锁
-
- 1. 锁的概念
- 2. 锁的状态
- 3. 锁的优化策略
-
- 1. 锁消除(编译器的操作)
-
- 1. 优点
- 2. 锁消除的原理(怎么实现的?逃逸分析)
-
- 1. 问:JVM如何在编译期消除锁的?
- 2. 题外话:什么是逃逸分析技术?
- 3. 问:JVM如何判断对象是否逃逸?(了解就行)
- 4. 题外话:隐式使用同步方法是什么意思?
- 5. 有人说,单线程下的对象一定会发生锁消除吗?(好问题,我自己编的)
- 2. 锁粗化
-
- 1. 锁粗化的概念(for循环)
- 2. 锁粗化出现的场景(vector方法的add操作)
- 2. 锁粗化的原理
- 3. 锁升级
-
- 1. 锁升级的过程
- 2. 锁升级的原理
- 3. 什么时候会发生锁升级?
- 4. 自旋锁
-
- 1. 为什么要引入自旋锁?
- 2. 自旋锁的定义
- 3. 自旋锁的优点
- 4. 自旋锁的缺点
- 5. 适用场景
- 6. 使用自旋锁的注意事项
- 7.JVM相关参数
- 8. 问:自旋锁有什么缺陷?
- 5. 自适应自旋锁(自旋次数动态变化)
-
- 1. 自旋次数由什么决定?
- 2. 自适应自旋锁如何体现《自适应》?(JVM的伯乐心理,伯乐这词感觉也不是很恰当,又有点像是:教练海选种子选手)
- 6. 偏向锁(在单线程环境居多)
-
- 1. 什么是偏向锁?
- 2. 为什么要引入偏向锁?目的是什么?(使单线程快上再加快)
-
- 1. 思考题:一个线程执行同步块,那就是不会发生资源并发冲突,就代表着会发生锁消除吗?
- 3. 偏向锁的原理(一次CAS指令、对象头中的锁偏向线程ID)
-
- 1. 获取锁(拿到锁,然后记录在自己对象头中,且不会释放锁)
- 2. 释放锁
- 4. 偏向锁什么时候会转化成轻量级锁?(多线程且资源竞争激烈)
-
- 1. 题外话:关于资源竞争激烈,具体怎么解释?(这是概念的理解问题,到哪都可以问)
- 2. 多线程的情况下,一定不存在偏向锁吗?(这问题很深)
- 5. JVM相关配置
- 7. 轻量级锁
-
- 1. 轻量级锁的出现
- 2. 优点
- 3. 轻量级锁的原理(多次CAS指令)(这里有空再理解)
- 8. 重量级锁(如Synchronized、用户态、内核态)
-
- 1. 出现的原因
- 9.重量级锁、轻量级锁和偏向锁之间转换
-
- 1. 三者之间的转换
- 2. 三者之间的比较

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121207.html