查看完整视频
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

积分观看

您支付积分,方可查看完整视频

{{user.role.value}}
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频

开通VIP,畅学所有专题课程视频

会员专享

视频选集

Synchronized的源码案例剖析

  • 课程笔记
  • 交流讨论

Synchronized在Java并发编程的重要性比较高,所以我单独用了三节课来讲:

1.第一节课:Synchronized的底层实现原理

2.第二节课:史上最强Synchronized锁完整升级详解

3.第三节课:就是今天的Synchronized的源码案例剖析

这样通过三节课来从底层实现、锁的升级、以及源码案例,可以让你透彻的掌握好Synchronized,秒杀面试官了。

明天我会重点讲两节课:主要是讲ReentrantLock,这个也是需要重点掌握。

7 条回复 A文章作者 M管理员
  1. 路正银

    1、synchronized不需要手动释放和开启锁
    2、synchronized可以加在方法和代码块上,lock只能加在代码块上
    3、synchronized是由JVM执行的
    4、lock是以CAS的方式实现的
    5、同步非常激烈的时候,synchronized的性能一下子能下降好几十倍,而reentrantlock还能维持常态
    6、reentrantlock支持公平锁和非公平锁,synchronized仅支持非公平锁

    • mikechen

      总结不错 ✗拳头✗

  2. JansenZhang

    1.ReentrantLock只能用于方法块的使用,sync可以在普通方法、静态方法、方法块上使用;
    2.ReentrantLock加锁必须手动解锁,sync加锁后由jvm自动解锁;
    3.ReentrantLock基于AQS+CAS实现,sync基于对象头+monitor实现;
    4.ReentrantLock支持公平和非公平锁,sync只支持非公平锁;
    5.在资源竞争激烈时,ReentrantLock有比sync更优的表现,不过在经过1.6版本的sync的锁升级机制以后,也能保持和ReentrantLock相当的表现。

    • mikechen

      挺好,言简意赅,直接说重点,保持这个风格 ✗咧嘴笑✗ ✗拳头✗

  3. JansenZhang

    额,写错了,第一点是ReentrantLock只能用于代码块的使用,sync可以在普通方法、静态方法、代码块上使用。

    • mikechen

      这么晚了还在做作业,本周你与路正银提前锁定了前2名 ✗棒棒的✗ ,早点休息

  4. 李鸿翼

    Synchronized通过JVM隐式获取和释放锁,ReentrantLock需要显示的获取和释放锁,更具有灵活性。
    Synchronized是JVM底层(对象头)实现的,ReentrantLock是java底层(AQS+CAS)实现的
    Synchronized是非公平、可重入锁,ReentrantLock支撑公平、非公锁,可重入
    Synchronized支持方法、代码块,ReentrantLock只支持代码块