实现了类似Object的 wait - notify(All) 的功能。wait - notify(All) 和 synchronized 搭配,Condition 和 Lock 搭配。
tip:
- 就跟 obj.wait() 要先 synchronized 一样, await() 要先 lock()。
- signal() 之后不是立马唤醒 await(),而是等 signal() 的线程 unlock() 之后才唤醒;synchronized 也是,并不是notify() 执行了立马唤醒 wait(),要等出了同步块才可。
- await():将同步队列SynchronizedQueue 的首结点重新包装并移至等待队列WaitQueue。
-
signal():将等待队列WaitQueue 的尾结点移至同步队列SynchronizedQueue 的尾部;signalAll 则是将等待队列的全部节点移至同步队列。
执行状态图