- 如果一个锁对象,自旋等待刚刚成功获得锁,并且持有锁的线程正在运行,那么虚拟机认为这次自旋仍然可能成功,进而运行自旋等待更长的时间 。
- 如果对于某个锁,自旋很少成功,那在以后要获取这个锁,可能省略掉自旋过程,以免浪费处理器资源 。
锁消除锁消除是指虚拟机即时编译器在运行时 , 对一些代码上要求同步,但被检测到不可能存在共享数据竞争的锁进行消除 。主要根据逃逸分析 。
程序员怎么会在明知道不存在数据竞争的情况下使用同步呢?很多不是程序员自己加入的 。
锁粗化原则上,同步块的作用范围要尽量小 。但是如果一系列的连续操作都对同一个对象反复加锁和解锁 , 甚至加锁操作在循环体内,频繁地进行互斥同步操作也会导致不必要的性能损耗 。
锁粗化就是增大锁的作用域 。
轻量级锁在没有多线程竞争的前提下 , 减少传统的重量级锁使用操作系统互斥量产生的性能消耗 。
偏向锁消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能 。即在无竞争的情况下 , 把整个同步都消除掉 。这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中 , 该锁没有被其他的线程获?。?则持有偏向锁的线程将永远不需要同步 。
推荐阅读
- JVM学习笔记——垃圾回收篇
- 雾境序列荒林回响主线3
- 网吧怎么玩明日之后(网吧怎么登录明日之后pc)
- 低配电脑怎么玩明日之后(电脑如何玩明日之后)
- 【Java复健指南09】项目练习全解--房屋出租系统
- 【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程
- 【Bluetooth|蓝牙开发】二、蓝牙开发入门
- 【深入浅出 Yarn 架构与实现】1-1 设计理念与基本架构
- 原神香醉坡兰那罗在哪
- 黑莓q5用安装微信的方法a 用黑莓自带的印象笔记手敲的 看不懂的宝宝们在私聊我吧