查看完整视频
评论可见

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

积分观看

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

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

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

¥{{user.role.value}}
专属视频

只允许以下等级用户查看该视频

升级
会员专享

Synchronized的源码案例

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

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

2.第二节课:Synchronized锁的完整升级详解

3.第三节课:就是今天的Synchronized的案例

这样通过三节课来从底层实现、锁的升级、以及案例,可以让你更好的掌握好Synchronized。

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

所以,今天的作业就先从ReentrantLock开始热身。

课后作业

重点谈谈:Synchronized与ReentrantLock的区别(越详细越好)?

这里很多都会从Synchronized开始问起,如果上面3节课以及作业都完成了,基本就掌握了,剩余就需要掌握与ReentrantLock的区别。

面试官特别喜欢从Synchronized开始入手,再到ReentrantLock来一起考,所以需要认真掌握好两者的区别,越详细越好。

请把你的答案写到问答区域,一课一练。(输出是最好的学习:每一次输出都会让你离目标更进一步)

2:并发锁

深入ReentrantLock的实现原理

2020-7-9 12:16:09

2:并发锁

史上最强Synchronized锁升级详解

2020-7-7 12:12:57

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

    • 总结不错 ✗拳头✗

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

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

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

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

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

个人中心
今日签到
搜索