Condition对象是由Lock对象创建出来的,其功能同wait/notify(换成了await/signal)差不多,但他的优势所在之处,就是他可以指定唤醒的对象,也就是说作用力度更细。此外,当线程释放锁进入等待状态时,不会响应中断!
最后粘贴参考中的一段话:
这就是多个Condition的强大之处,假设缓存队列中已经存满,那么阻塞的肯定是写线程,唤醒的肯定是读线程,相反,阻塞的肯定是读线程,唤醒的肯定是写线程,那么假设只有一个Condition会有什么效果呢,缓存队列中已经存满,这个Lock不知道唤醒的是读线程还是写线程了,如果唤醒的是读线程,皆大欢喜,如果唤醒的是写线程,那么线程刚被唤醒,又被阻塞了,这时又去唤醒,这样就浪费了很多时间。