美文网首页
JDK的锁优化

JDK的锁优化

作者: 十毛tenmao | 来源:发表于2021-08-03 23:59 被阅读0次

JDK1.6重点提升了并发性能,HotSpot开发团队实现了各种锁优化技术,如适应性自旋锁、锁消除、锁粗化、轻量级锁和偏向锁

重量级锁

线程遇到synchronized关键词时,需要获取锁,这个时候需要使用系统调用获取互斥量,如果没有获取到则被操作系统挂起线程,因为此过程需要进行用户态转内核态,而且有可能需要切换线程,操作比较重,所以称为重量级锁。

轻量级锁

在大部分场景下,共享数据的锁定状态只会持续很短的一段时间,使用重量级锁的话,锁的获取和上下文切换的时间,可能都比共享逻辑执行时间还长,得不偿失,所以引入轻量级锁。 轻量级锁,是乐观锁的一种,如果对象上的锁被其他线程获取,则自旋等待。 如果超过一定的自旋次数后,则膨胀为重量级锁

偏向锁

在一些场景中,共享数据实际上只会被一个线程访问,使用偏向锁就只需要开始加锁的一次CAS,效率最高。如果遇到锁竞争,则膨胀为轻量级锁

疑问

  • mark word一共是32位,当标志位是00(轻量级锁)时,指向锁记录的指针位数只有30位,30位如何保存下指针呢?
  • 膨胀为重量级锁时,如何让已经拥有该对象轻量级锁获取到重量级锁,也就是内核的互斥量?
  • 偏向锁时,mark word前面保存了偏向线程ID,那么对象哈希码保存到哪里去了?

相关文章

  • 锁优化

    锁优化 JDK6之后对锁的实现引入了大量的优化,如适应性自旋(Adaptive Spinning)、锁消除(Loc...

  • JDK的锁优化

    JDK1.6重点提升了并发性能,HotSpot开发团队实现了各种锁优化技术,如适应性自旋锁、锁消除、锁粗化、轻量级...

  • Java虚拟机的锁优化

    JDK内部的优化策略主要包括以下几点 锁偏向 轻量级锁 自旋锁 锁消除 1.锁偏向 锁偏向是一种针对加锁操作的优化...

  • java面试题 --- 并发②

    1. JDK1.6 开始对 synchronized 做了哪些优化?使用了锁升级、锁粗化、锁消除等方式来优化性能。...

  • synchronized已经不在臃肿了,放下对他的成见之初识轻量

    前言 物竞天择,适者生存。JDK也在不断的优化中。关于JDK中synchronized锁内部也是不断的优化,前面我...

  • JDK1.6 对 synchronized 的锁优化

    1. 背景 在 JDK 1.6 中对锁的实现引入了大量的优化。 目的 减少锁操作的开销。 2. 锁优化 在看下面的...

  • JDK1.6 对 synchronized 的锁优化

    1. 背景 在 JDK 1.6 中对锁的实现引入了大量的优化。 目的 减少锁操作的开销。 2. 锁优化 在看下面的...

  • JDK1.6 对 synchronized 的锁优化

    背景 在JDK1.6中对锁的实现引入了大量的优化。 目的 减少锁操作的开销。 锁优化 在看下面的内容之间,希望大家...

  • JDK6 synchronized加锁过程

    JDK版本: 1.6 前言 jdk1.6对synchronized锁进行了一些列的优化, 由原来的直接使用重量级锁...

  • 深入JVM-锁与并发

    一、锁在Java虚拟机中的实现与优化 1.1 偏向锁 偏向锁是JDK 1.6 提出的一种锁优化方式。其核心思想是,...

网友评论

      本文标题:JDK的锁优化

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