ReentrantLock的Condition使用总结

对于ReentrantLock创建公平锁的情况,可能并不会一直公平,本人测试的过程中就遇到过一次不公平的现象.

还有就是对Condition的使用的理解:
1.condition是和ReentrantLock配合使用的,condition要和某一个ReentrantLock绑定.

2.当在一个线程调用了condition.await()方法后,会使释放与condition关联的对象锁,此时,该线程会卡死在这个方法处,直到该方法返回,才会从该方法处重新运行,
在该方法返回之前,此线程必须重新获取该对象锁,该方法返回后,当前线程一定会拥有该对象锁(官方描述).

3.实践后发现,调用condition.await()方法后,会释放当前线程拥有的对象锁(即ReentrantLock),无论此线程对该对象上了多少次锁.

4.当该方法返回后,此线程会重新恢复到未调用该方法之前所拥有的对象锁的数量.

5.一个ReentrantLock可以和多个Condition绑定,多个condition可以分别在不同的子线程里面调用await方法,然后使用对应的condition唤醒某一个因该condition在等待的线程,所以说使用condition可以显示的指定唤醒哪一个线程,而notify却不能.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值