温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中怎么实现一个偏向锁

发布时间:2021-06-30 17:25:19 来源:亿速云 阅读:327 作者:Leah 栏目:大数据

今天就跟大家聊聊有关Java中怎么实现一个偏向锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

偏向锁和轻量级锁一样也是在JDK 1.6中新增的一种锁,它的目的是为了解决数据在无竞争的时候把同步语句去掉,进一步提高程序的运行性能。在上一篇中使我们知道轻量级锁是在无数据竞争的时,使用CAS操作去去掉同步的。那么在偏向锁中就是在无数据竞争时把整个同步都去掉,连CAS操作都不需要做了。偏向锁实际的本质是就是偏向第一个获得它的线程,当这个线程在执行时,如果该锁没有被其他的线程获取,则持有偏向锁的线程将一直不需要进行同步。下面我们看一下在线程获取偏向锁时,Mark Word都会有哪些变化。

当线程第一次获取锁时,虚拟机会把Mark Word中的标志位修改为01,即偏向模式。同时用CAS操作把获取到这个锁的线程记录在对象的Mark Word之中。如果CAS操作成功,那么持有偏向锁的线程每次在执行同步代码块时,虚拟机都不会进行任何同步操作。也就是不会调用同步相关的字节码指令等。当有其它线程尝试去获取这个锁时,偏向模式也就结束了。下图为偏向锁和轻量级锁转化时对象Mark Word等信息的变化。

看完上述内容,你们对Java中怎么实现一个偏向锁有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI