了解Java偏向锁定义以及示例|天天新动态
来源:哔哩哔哩    2023-04-09 19:55:21


(资料图)

1.Java偏向锁定义

Java中的偏向锁是一种针对线程独占锁的优化手段。在某些场景下,一个对象在一段时间内只被一个线程访问,如果每次都要获取锁的话,会对性能产生一定的影响。因此,偏向锁机制就应运而生。

当一个线程第一次访问一个对象时,JVM会将该线程ID记录在对象的Mark Word中,然后把Mark Word的状态设置为“偏向锁”,并且把Mark Word中的线程ID指针指向当前线程。此时该对象就被称为“偏向对象”。

当其他线程再次访问该对象时,JVM会判断该对象是否是“偏向对象”,如果是,则判断持有偏向锁的线程是否为当前线程,如果是,则直接进入临界区。如果不是,则说明有其他线程已经持有该对象的锁,此时会先撤销偏向锁,然后使用轻量级锁或重量级锁来保护该对象。

2.示例代码

以下是一个使用Java偏向锁的示例代码:

在上面的代码中,对象lock是一个独占锁,第一次使用synchronized关键字获取该对象的锁时,JVM会尝试使用偏向锁来优化性能。

需要注意的是,偏向锁只适用于高并发情况下对象访问热点的场景,如果访问对象的线程不是独占的,偏向锁会产生额外的开销,降低系统的整体性能。因此,在实际应用中,需要根据具体情况来选择合适的锁实现方式。

Copyright   2015-2022 青年玩具网 版权所有  备案号:皖ICP备2022009963号-20   联系邮箱:39 60 291 42@qq.com

回顶部