Condition
一、简介
我们在使用Synchronized关键字的时候,可以使用对象监视器的wait/notify方法来实现等待通知。当我们使用Lock的时候,如果想要实现等待通知就需要使用Condition对象了。
二、与wait/notify的对比
对比项
对象监视器的方法
Condition
前置条件
获取对象的锁
调用Lock.lock获取锁,调用Lock.newCondition获取Condition对象
调用方式
直接调用,如:object.wait()
直接调用,如:condition.await()
等待队列个数
一个
多个
当前线程释放锁并进入等待状态
支持
支持
当前线程释放锁并进入等待状态,在等待状态中不响应中断
不支持
支持
当前线程释放锁并进入超时等待状态
支持
支持
当前线程释放锁并进入等待状态到将来的某个时间
不支持
支持
唤醒等待队列中的一个线程
支持
支持
唤醒等待队列中的全部线程
支持
支持
Last updated