为了账号安全,请及时绑定邮箱和手机立即绑定

lock与synchronize的解锁顺序问题?

lock与synchronize的解锁顺序问题?

慕的地6264312 2019-02-20 20:59:06
在学习lock与synchronize的区别时,看到这样一句话:“ lock更灵活,可以自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)”。请问这里: 1.lock的自由定义多把锁的枷锁解锁顺序怎么理解? 2.synchronized要按照先加的后解顺序怎么理解? 谢谢各位!
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

Lock是一个接口,最常用的实现是 ReentrantLock,它的一个灵活之处是可以设定fair参数。

synchronized 和fair=false的ReentrantLock 无法决定加锁顺序。换句话说,线程A、B、C都要锁定对象,尝试锁定的时间是A最早、然后是B,最后是C,那么当A解锁对象时,不能确定到底B还是C接下来锁定对象。

如果用fair=true的ReentrantLock(公平锁),情况就确定了:A解锁对象时,由于B比C先尝试锁定对象,所以接下来一定是B来锁定,只有当B解锁时才轮到C。

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 842 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号