Java多线程系列--synchronized之锁的升级

原文网址:Java多线程系列--synchronized之锁的升级_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍Java的synchronized的锁的升级过程。

        锁的升级是单向的:只能从低到高升级,不会出现锁的降级。

锁的升级过程

  1. JVM 有偏向锁启动延迟(默认是4秒)
  2. 若不考虑偏向锁的启动延迟,当仅有一个线程拿锁的时候,锁对象的状态是偏向锁状态
  3. 当多个线程拿锁的时候,若是交替拿锁不发生竞争或者发生竞争线程自旋的次数小于某阈值,偏向锁升级成轻量级锁
  4. 当自旋的次数超过某阈值,轻量级锁升级成重量级锁。

锁的类型

偏向锁

乐观锁:通过CAS操作竞争锁。

轻量级锁

乐观锁:通过CAS操作竞争锁。

重量级锁

重量级锁是悲观锁,通过monitor实现,每一个锁对象都有且仅有一个自己的monitor对象。

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/127046891