Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。
它分解成了不同的对象,那么就是说。我现在可以利用condition来明确的给这些线程分帮结派了,当正在设置资源的线程在同步操作的时候,它就拿到了唯一的一个lock,等它设置完资源了,它就调用singnal方法只唤醒对方的线程。不用再唤醒所有的线程了。这样就提高了代码的效率。 |