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#
推荐阅读
-
-
为啥很多人认为人生必须有爱情、性、婚姻、孩子等好像对他们来说没有这些就活不下去似的
-
奥斯汀|她的《傲慢与偏见》,为何在历经200多年后,依旧盛行不衰?
-
为啥追星的人喜欢疯狂地在社交网络平台(微博)上转发关于明星的微博来刷屏
-
珠穆朗玛峰属于哪个国家的领土 珠穆朗玛峰属于哪个国家
-
国资|收评:大盘单边上行创指大涨3.9% 数字货币持续活跃
-
管宗祥|娱乐圈传噩耗!101岁演员管宗祥去世,晚年住养老院最后露面苍老
-
封面新闻|30秒 | 皮尔洛上任尤文新帅,尚无任何执教经历
-
『爱搞笑的鸡大腿』咱家老丈人吃饭用锅盖,你没见过吧?,【笑话】:人家吃饭用碗
-
泰迪小公举|61岁老戏骨吴冕,与丈夫恩爱38年,今一家三口低调幸福
-
时尚护肤美妆说油皮痘肌的护肤顺序,油皮痘肌适合用什么护肤品
-
育儿family|时隔18年后现状如何?终究逃不过现实,国内第一例“五胞胎”
-
-
-
翡翠|2千入手的大马坎翡翠原石,皮薄且异彩纷呈,最终能如愿以偿?
-
『老师不满学生只给班主任送花发飙』老师不满学生只给班主任送花发飙,当地整治师德师风
-
股市|新华财经|金融及钢铁股票下跌推动印度股市Sensex30指数大跌
-
#奇闻杂谈#使用工具至今没变,真的领先中国百年?,印度外卖准确率高达99%
-
nginx做负载均衡服务器,配置动静分离 保姆级教程
-
Eileen Show|呛郭敬明,获尔冬升赞,新生代演员们都这么猛吗?