多线程优化:Java多线程优化的偏向锁原理分析

  Java偏向锁(Biased Locking)是Java 6引入项多线程优化它通过消除资源无竞争情况下同步原语步提高了运行性能

  轻量级锁也是种多线程优化它和偏向锁区别在于轻量级锁是通过CAS来避免进入开销较大互斥操作而偏向锁是在无竞争场景下完全消除同步连CAS也不执行(CAS本身仍旧是种操作系统同步原语始终要在JVM和OS的间来回开销)

  所谓无竞争场景举个例子就是单线程访问带同步资源或思路方法

  偏向锁实现原理

  偏向锁顾名思义它会偏向于第个访问锁线程如果在接下来运行过程中该锁没有被其他线程访问则持有偏向锁线程将永远不需要触发同步

  如果在运行过程中遇到了其他线程抢占锁则持有偏向锁线程会被挂起JVM会尝试消除它身上偏向锁将锁恢复到标准轻量级锁(偏向锁只能在单线程下起作用)

  通过下图可以更直观理解偏向锁:

  理解偏向锁

  这张图省略了轻量级锁相关几处步骤将关注点更多地聚焦在偏向锁状态变化上


="xspace-totlerecord">2="xspace-totlepages">1/2="xspace-current">12>
Tags:  java多线程例子 java多线程 线程优化 多线程优化

延伸阅读

最新评论

发表评论