Java言語で学ぶデザインパターン入門 マルチスレッド編 第3章 Guarded Suspension

ある条件が満たされないと実行できない処理があって、別のスレッドがその条件を変化させることによって実行を制御するパターン。「条件付きのsynchronized」「マルチスレッド版のif」だそうです。

public class GuardedObject {
    public synchronized void guardedMethod() {
        while (![ガード条件]) {
            wait();
        }

        [目的の処理]
    }

    public synchronized void stateChangingMethod() {
        [状態を変化させる]
        notifyAll();
    }
}