java 重量级锁_轻量级锁和重量级锁的区别分别有哪些?java锁机制教程

Java中有着各种锁机制,今天我们要说的就是其中两种状态,轻量级锁与重量级锁,小伙伴们知道它们的区别分别有哪些吗?下面来了解一下吧。

首先我们了解一下有哪些锁状态吧

锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级到重量级锁,注:锁的升级是单向的,不会出现降级现象。JDK

1.6中默认是开启偏向锁和轻量级锁的,我们也可以通过-XX:-UseBiasedLocking来禁用偏向锁。锁的状态保存在对象的头文件中,以32位的JDK为例:

不同于ReentratLock锁,这些锁都是概念上的,它们都是JDK1,6中为了了对synchronized关键字进行优化而产生的的锁机制。这些锁的启动与关闭策略都可以通过设定JVM启动参数来设置,当然,一般情况下使用JVM默认的策略就可以了。

5d91d6b1093024bffb93c29db706d797.png

偏向锁

偏向锁指在运行过程中,一个对象的锁偏向某个线程。即在开启偏向锁机制情况下,一个线程获得锁,当该线程下次需要获得锁时,不需要再获得锁(即忽略synchronized关键词),直接就可以执行同步代码,适用于竞争较少的情况。

轻量级锁

作为偏向锁的升级,在无多线程竞争的情况下,使用轻量级锁就能够最大化减少性能消耗,但是有个缺点,一旦多个线程同时竞争锁时,轻量级锁就会膨胀,成为重量级锁。

重量级锁

即当当前锁被其他线程占用时,当前的线程会进入阻塞状态。

锁区别

61fe8b22fbe2a876ae83d002c97a03fd.png

以上就是今天的全部内容了,锁的实现是java解决并发的最常用手段之一,如果还想要了解更多锁机制相关java入门知识,就请持续关注奇Q工具网吧。

推荐阅读:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值