美文网首页
锁的升级和比较

锁的升级和比较

作者: 我会四歩篮 | 来源:发表于2018-11-23 00:53 被阅读2次

一共有四种,无状态锁,偏向锁,轻量级锁,重量级锁。锁可以升级,但不能降级。

1.偏向锁。

          当一个线程访问一个对象的时候,会将自己的线程id记录在对象头和栈帧中,下次来获取对象的时候,会看对象里面的线程id是不是自己,如果是,直接执行代码块。

        只有当竞争获取锁的时候,偏向锁才会撤销。 当有多个新的线程想执行代码块,对象会将头部的线程id清空,个个线程竞争获取锁,会将对象头中的线程id变成自己的。

2.轻量级锁

        线程会将对象头中的锁标记(MarkWord)存在自己的栈帧中,在获取锁时,如果成功的获取了对象锁,就会将改标记写到对象头中;如果没有获取锁,则说明有竞争,则会膨胀成重量级锁。

        竞争轻量级锁的线程不会阻塞,如果获取不到锁,该线程就会自旋。

3. 重量级锁

        重量级锁不适用自旋,不会消耗CPU,但会阻塞线程,响应慢。

相关文章

  • 锁的升级和比较

    一共有四种,无状态锁,偏向锁,轻量级锁,重量级锁。锁可以升级,但不能降级。 1.偏向锁。 当一个线程访问...

  • 阿里面试失败后,一气之下我图解了Java中18把锁

    乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|...

  • 锁的四种状态

    锁的状态总共四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级到重量级...

  • 多线程(6) — CAS自旋及问题

    自旋锁CAS: CAS:Compare and Swap, 即比较交换。在轻量级锁升级为重量级锁时就用到了自旋锁C...

  • 锁升级

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

  • 知识点欠缺

    java锁的使用,锁类型(CAS)JVM模型GCRoot有哪些volatile和synchronized(锁升级)...

  • 关于synchronized的锁升级自旋问题

    1.6之后对synchronized做了优化,包括锁消除、锁粗化、自旋和锁升级的过程:偏向锁、轻量级锁、重量级锁。...

  • Synchronized 锁升级

    Synchronized 锁升级 锁的基础知识 锁的类型 从宏观上锁分为乐观锁和悲观锁 乐观锁:认为读多写少,遇到...

  • Java中的锁的几种状态

    锁的状态分几种, 无锁状态--->偏向锁-->轻量级锁-->重量级锁 锁可以升级不能降级目的是:提高获取锁和释放...

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

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

网友评论

      本文标题:锁的升级和比较

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