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#
推荐阅读
-
-
归属|妙可蓝多2020年上半年净利润同比增长727.87%
-
尔新军事|谁会毫不犹豫伸出援手?除了巴铁,还有一个国家,假如中国有难
-
-
华丽|上棉八厂、中成仓库……宝山这些历史地标“华丽转身”
-
特斯拉(TSLA.US)10月德国销量同比增长23.3%,是唯一实现同比正增长的汽车制造商
-
米多哥|幕后推手浮出水面,陆巡从“香饽饽”炒成“鬼见愁”
-
-
-
私生饭@表弟道出马蓉内幕,亲弟去世成一生的痛,王宝强儿女被曝美国籍
-
刘涛,下巴,美人,漂亮,长相,问君,杨颖,天仙,日子,倾国倾城,观点评论,刘涛,杨颖,范冰冰,杨幂,下巴|中国公认最标致的“美人脸”刘涛垫底,第一美到令人窒息
-
-
-
#赏析#iQOO 3超清美图赏析:一起感受iQOO世界中的速度与光影
-
炎热夏季是高血压的“危险季”,注意好6点,让您放心一夏
-
-
#适合#河北最“适合宜居”的城市,石家庄和张家口落选,外地人纷纷选择在此定居
-
启上神兵|起因是买俄制武器,但其实很多事令美不爽,美国又要制裁土耳其了
-
-