Java偏向锁(Biased Locking)是Java 6引入
项多线程优化
它通过消除资源无竞争情况下
同步原语
进
步提高了
运行性能
轻量级锁也是
种多线程优化
它和偏向锁
区别在于
轻量级锁是通过CAS来避免进入开销较大
互斥操作
而偏向锁是在无竞争场景下完全消除同步
连CAS也不执行(CAS本身仍旧是
种操作系统同步原语
始终要在JVM和OS的间来回
有
定
开销)
所谓
无竞争场景
举个例子
就是单线程访问带同步
资源或思路方法
偏向锁实现原理
偏向锁
顾名思义
它会偏向于第
个访问锁
线程
如果在接下来
运行过程中
该锁没有被其他
线程访问
则持有偏向锁
线程将永远不需要触发同步
如果在运行过程中
遇到了其他线程抢占锁
则持有偏向锁
线程会被挂起
JVM会尝试消除它身上
偏向锁
将锁恢复到标准
轻量级锁
(偏向锁只能在单线程下起作用)
通过下图可以更直观
理解偏向锁:
这张图
省略了轻量级锁相关
几处步骤
将关注点更多地聚焦在偏向锁
状态变化上
="xspace-totlerecord">2
="xspace-totlepages">1/2
="xspace-current">12>
延伸阅读
- 2011-9-1-- 多线程处理,..net 下的多线程处理,将复杂的多线程处...
- 2011-9-5-- java多线程,JAVA多线程02
- 2011-9-1-- java并发编程,Java 多线程与并发编程总结
- 2010-12-8-- java多线程,Java多线程方案如何处理关键代码
- 2010-12-29-- java多线程,java多线程性能浅析
- 2010-12-23-- java多线程,Java多线程程序设计详细解析
- 2010-12-23-- java多线程,Java 多线程总结
- 2011-6-30-- java多线程,Java多线程程序设计详细解析
- 2010-11-24-- 多线程,闲话"多线程
- 2010-12-23-- java多线程,JAVA 的多线程浅析[一][转]
最新评论