Latch.java

package ch.hslu.exercises.sw06.ex2;

/**
 * Eine Synchronisationshilfe, die es ermöglicht, einen oder mehrere Threads warten zu lassen, bis
 * diese durch andere Threads aufgeweckt werden. Latches sperren so lange, bis sie einmal ausgelöst
 * werden. Danach sind sie frei passierbar.
 */
public class Latch implements Synch {

    private boolean isClosed = true;

    @Override
    synchronized public void acquire() throws InterruptedException {
        while (isClosed) {
            this.wait();
        }
    }

    @Override
    synchronized public void release() {
        isClosed = false;
        this.notifyAll();
    }
}