ReentrantLock显式的获得、释放锁 , synchronized隐式获得释放锁;synchronized不需要我们手动解锁 , 而ReentrantLock需要自己在finally中调用unlock()方法手动解锁 。 ReentrantLock可响应中断、可轮回 ,, 为处理锁的不可用性提供了更高的灵活性 , synchronized是不可以响应中断的;ReentrantLock是API级别的 , synchronized是JVM级别的;ReentrantLock可以实现公平锁 , 而synchronized释放锁后 , 线程竞争无序 , 可能导致线程饥饿(先到的线程一直得不到锁); ReentrantLock通过Condition可以绑定多个条件;底层实现不一样 ,synchronized是同步阻塞 , 使用的是悲观并发策略 , lock是同步非阻塞 , 采用的是乐观并发策略;Lock是一个接口 , 而synchronized是Java中的关键字 , synchronized是内置的语言实现;synchronized在发生异常时 , 会自动释放线程占有的锁 , 因此不会导致死锁现象发生;而Lock在发生异常时 , 如果没有主动通过unLock()去释放锁 , 则很可能造成死锁现象 , 因此使用Lock时需要在finally块中释放锁; 通过Lock可以知道有没有成功获取锁 , 而synchronized无法得知获得锁情况;Lock可以提高多个线程进行读操作的效率 , 既就是实现读写锁等 。 通过以上对比 , ReentrantLock可能更加灵活一些 , 但是从性能考虑 , JDK1.6以后对synchronized做了很多优化锁 , 实际中还是提倡synchronized来进行同步 。
下一节分享虚拟机对synchronized的锁优化 。
内容来源于《深入理解Java虚拟机》第十三章13.2节内容 。
#程序员##JVM#
推荐阅读
-
中宣部部署开展“倡导国庆新民俗、打造爱国活动周”活动
-
故事|天桥说书和奶奶故事等,是中国文化传播的重要手段
-
样本|最新!陕西排查处置进口白虾:对外包装部分样本阳性批次白虾全部下架、停售、封存
-
[浙报融媒体]义乌苏溪镇企业代表“话转机”,困境之下谋出路
-
再回首,敬往事一杯酒是什么意思?再回首敬往事一杯酒
-
笑哈哈八卦|潘长江女儿近况,儿子石头乖巧可爱,夫妻恩爱家庭美满
-
澎湃新闻|驰宏锌锗:拟现金3.33亿元收购会泽安第斯矿业全部股权
-
[13]2小时14分4秒!肯尼亚选手科斯盖打破女子马拉松世界纪录
-
浙报融媒体|一分一秒拼实力 浙江省首届技能大赛侧记,浙报关注丨一毫一厘显匠心
-
印度|新冠感染超3亿!莫迪最后遮羞布被撕碎,向美俄求购疫苗遭打脸:钱呢
-
有情感的鱼@女人不爱你了,都是从说这几句话开始的,男人要警醒
-
魔兽世界|《魔兽世界》9.0新版本什么职业厉害 职业选择推荐
-
深圳餐厅下药男子辩称是恶作剧|【最新】深圳餐厅下药男子辩称是恶作剧 事件详情始末曝光令人发指
-
中国侨网|全网课还是混合教学 纽约亚裔家长面临两难选择
-
-
想让你开心|网友:你在开玩笑?,女生一辈子能“怀孕”多少次?医生表示完后
-
蚂蚁庄园|2020年8月11日蚂蚁庄园小课堂:被烫伤后起水泡,最好如何处理?
-
-
-