2025年【多线程】锁消除、锁粗化、偏向锁、自旋锁、自适应字段锁、轻量级锁、重量级锁

【多线程】锁消除、锁粗化、偏向锁、自旋锁、自适应字段锁、轻量级锁、重量级锁目录 锁 1 锁的概念 2 锁的状态 3 锁的优化策略 1 锁消除 编译器的操作 1 优点 2 锁消除的原理 怎么实现的 逃逸分析 1 问 JVM 如何在编译期消除锁的 2 题外话 什么是逃逸分析技术 3 问

大家好,我是讯享网,很高兴认识大家。


讯享网

目录

    • 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. 三者之间的比较
小讯
上一篇 2025-03-13 17:00
下一篇 2025-02-18 19:03

相关推荐

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