美文网首页java面试
锁的升级与对比

锁的升级与对比

作者: 土豆有点 | 来源:发表于2018-05-28 19:38 被阅读1次

先占一个坑,之后来回答。
1.锁底层的实现原理是什么?
2.锁为什么会带来额外的性能消耗?
怎么样来减少这种消耗?---针对不同的常见用不同的锁---无锁状态,互斥锁,偏向锁,轻量级锁,重量级锁。(这几种锁怎么触发,怎么结束,运用场景,可以相互转化嘛,各有什么优缺点)
3.为什么要用锁--->单核多线程,时分复用,为了保证线程安全。我们要使用锁,通过锁保证多线程是one by one 执行。这个地方要区分多线程与并发(多核多线程)直接的区别


image.png

1.线程安全---加锁--性能下降
2.对象头Mark
*Mark Word, 对象头的标记,32位
*描述对象的hash、锁信息,垃圾回收标记,年龄

  • 指向锁记录的指针
  • 指向monitor的指针
  • GC标记
  • 偏向锁线程ID
image.png
image.png
image.png
image.png
image.png
语言层面的优化----减少锁的持有时间
image.png
语言层面的优化----减小锁粒度
image.png
image.png

减少锁粒度,可能会带来什么负面影响呢?以ConcurrentHashMap为例,说明分割为多个Segment后,在什么情况下,会有性能损耗?

语言层面的优化----锁分离(从功能上减小锁的粒度)
image.png
语言层面的优化---锁粗化
image.png
image.png
JVM层面的优化---锁消除
image.png
JVM层面的优化---无锁
image.png

相关文章

  • 锁的升级与对比

    先占一个坑,之后来回答。1.锁底层的实现原理是什么?2.锁为什么会带来额外的性能消耗?怎么样来减少这种消耗?---...

  • 并发编程02-Java并发机制和底层实现原理

    volatile的应用 synchronized的实现原理与应用对象头锁的升级与对比偏向锁1.偏向锁的撤销2.关闭...

  • Android锁的实现

    锁的对比 java中的锁一共有4种状态,级别从低到高分别是: 无锁状态 偏向锁 轻量级锁 重量级锁 锁只能升级,不...

  • Spring 事务

    一、注解属性 二、隔离与锁对比

  • 锁升级

    什么是锁升级?(Lock Escalation) 指将当前锁的粒度降低。比如: 把行锁升级为页锁。 将页锁升级为表...

  • 2019-04-24_Object与内部锁的使用基础(一)

    Object与内部锁的使用基础1.概述锁可以划分无锁、偏向锁、轻量级锁、重量级锁1.1.锁的对比1.内部锁Sync...

  • 20220802笔记

    synchronized如何实现的以及什么是锁升级volatile的特点Java中的指令重排悲观锁与乐观锁区别什么...

  • java提高班2-Synchronized 加锁原理

    锁升级过程 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 锁升级原理图 无锁 -> 偏向锁 线程T1请求sy...

  • 战神蜕变第151天

    科技不断升级,我们人的思考也是不断进步的,现在对比以前的,没有了以前的一点影子了。 就比如说锁古代最早之前还没有锁...

  • 多线程中 synchronized 锁升级,偏向锁>轻量级锁>重

    多线程中 synchronized 锁升级的原理是什么? synchronized 锁升级原理:在锁对象的对象头里...

网友评论

    本文标题:锁的升级与对比

    本文链接:https://www.haomeiwen.com/subject/juqnjftx.html