Java教程:JVM对Java的原生锁做了哪些优化?

 JVM对Java的原生锁(即synchronized关键字)做了许多优化,其中包括:

1.偏向锁(Biased Locking)

  当一个线程获取锁后,JVM会将锁的对象头标记为偏向锁。此时,该线程可以无需竞争地获取该锁。这种情况下,锁的获取和释放不需要额外的开销,因为偏向锁会记录线程ID,使得在该线程持有锁期间,其他线程无法获取该锁。只有在其他线程尝试获取锁时,才会升级为轻量级锁。

2.轻量级锁(Lightweight Locking)

  当多个线程争夺锁时,JVM会将锁标记为轻量级锁。此时,JVM会在锁对象的对象头中记录指向线程栈中锁记录的指针,以及用于保存原始对象的指针。这样,当一个线程尝试获取该锁时,JVM会将该线程的栈帧中的锁记录与锁对象头中的指针进行比较。如果相同,则表示该线程已经获得了该锁;否则,JVM会使用CAS操作尝试将锁对象头中的指针指向当前线程的锁记录。如果CAS操作成功,表示当前线程成功获得了锁。否则,表示有其他线程争夺该锁,此时JVM会将锁升级为重量级锁。

3.重量级锁(Heavyweight Locking)

  当多个线程争夺锁时,如果无法获得锁,则会升级为重量级锁。此时,JVM会使用操作系统的互斥量实现锁。重量级锁的开销非常大,因为需要进行用户态与内核态之间的上下文切换。

  下面是一个简单的代码演示,展示了偏向锁、轻量级锁和重量级锁的使用情况。

public class SynchronizedDemo { private int count = 0; public synchronized void increment() { count++; } public static void main(String[] args) { SynchronizedDemo demo = new SynchronizedDemo(); for (int i = 0; i < 100000; i++) { demo.increment(); } System.out.println(demo.count); } }

  在这个示例中,我们使用synchronized关键字来对increment()方法进行同步。由于该方法是实例方法,因此锁对象是该实例对象。当多个线程同时访问该方法时,JVM会根据锁的状态来选择使用偏向锁、轻量级锁或重量级锁。具体的选择过程是由JVM内部的锁升级算法来决定的,这里不再详细展开。

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Java教程:JVM对Java的原生锁做了哪些优化? https://www.dachanpin.com/a/cyfx/10625.html

(0)
上一篇 2023-05-12 02:02:21
下一篇 2023-05-12 02:03:24

相关推荐

  • 周鸿祎内部分享:领导力决定差距 这三种创业者我不看好

      3.收入模式。跟大家说一个经验,我其实在国内互联网还投了比较成功的公司,像迅雷、酷狗,而这些公司刚开始都是没有VC投的,为什么呢?很多VC都太忙于去盯这个东西未来怎么挣钱,其实看不清是必然的,因为一个孩子刚生出来,你跟我说他长大是当宇航员呢还是当科学家呢?谁知道呢?得看他的潜质。   为什么我最近这么关心领导力这个问题,因为随着公司的发展,我越来越觉得这…

    创业分享 2023-05-24
    138
  • 极品飞车ol短涡轮怎么用 短涡轮使用技巧攻略教程

    适合90度湾和发卡弯。多试一下就能熟悉。 然后再出弯的时候,也就是你打算给你的漂移收尾的时候,再按一下油门。这样能够获得再一次加速,但是时间不长。效果是能够补足你手刹的失速!! 极品飞车ol短涡轮怎么用 极品飞车ol短涡轮也就是我们俗称的氮气,那么极品飞车ol短涡轮怎么用?短涡轮使用技巧攻略教程,一起来看看吧。 感觉小编自从玩极品飞车ol之后,感觉自己对车子…

    创业分享 2023-05-22
    192
  • [聚焦四川农民工返乡创业]遂宁农民创业者要为百名残疾人授创业经验

    [聚焦四川农民工返乡创业]遂宁农民创业者要为百名残疾人授创业经验 2016年01月12日 00:20:02 来源:四川新闻网 记者:赵权军 编辑:许成嵩 陈一品多次创业后获得成功,他希望将创业经验传给100名残疾人   四川新闻网遂宁1月12日讯(记者 赵权军)“独乐乐不如众乐乐!”11日,遂宁市安居区西眉镇农民陈一品说出了他的心愿,希望将自己返乡成功创业的…

    创业分享 2023-05-16
    136
  • 创业板指涨逾2% 光伏板块表现强势 口罩板块表现较弱

    2月12日早盘,A股三大股指低开后震荡走高,盘中全线翻红,创业板指半日收涨2.05%。截至午间收盘,上证指数报2907.79点,上涨6.11点,上涨0.21%,成交额1564.89亿元;深证成指报10862.4点,上涨93.77点,上涨0.87%,成交额2777.27亿元,两市合计成交额4342.16亿元;创业板指报2070.04点,上涨41.6点,上涨2.…

    创业分享 2023-05-12
    136
  • 安博有多牛,看完安博中国东莞物流园就知道了!

    2012年东莞市重大建设项目——安博中国东莞物流中心在石排动工。该项目由美国上市公司安博投资9000万美元兴建,规划用地371亩,首期用地200亩,建筑面积达84000平方米,将建成华南地区最大的、集世界500强企业加工配送基地以及高端消费品物流配送中心为一体的电子商务化商贸综合性物流园。 东莞市委常委、宣传部部长潘新潮出席动工仪式。他表示,安博中国投资东莞…

    创业分享 2023-05-12
    141

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息