Jvm内部锁机制总结

一、线程安全和对象头Mark
每个对象都有一个对象头标记Mark(32位)
Mark描述对象hash、锁信息、垃圾回收标记、年龄

二、锁的分类
偏向锁:(只在单线程有效)
--------- 偏心锁,锁会偏向让当前已经持有锁的线程持有
--------- Mark中:标记为偏向,写入线程ID
--------- 只要没有竞争,获得偏向锁的线程将来进入同步块不需要同步(提高性能)
--------- 其它线程请求相同锁时(产生竞争),偏向模式结束
--------- 启用偏向锁: -XX:+UseBiasedLocking(默认启用)


轻量级锁
-------- BasicObjectLock(嵌入在栈中的对象):Mark对象头+锁指针
-------- 性能高,快速锁定
-------- 没有竞争时,使用轻量级锁。有竞争时(性能下降),升级为重量级锁。

自旋锁
-------- 竞争存在时,如果某个线程获取了锁,就让线程做几个空操作(自旋)
-------- JDK 1.7以上内
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值