package waitnotify;

import java.util.Queue;

/**
 * @author ssb
 */
public class PrimeConsumer implements Runnable {

	private Queue<Integer> primes_;
	private volatile boolean shutdown_;

	/**
	 * @param primes
	 */
	public PrimeConsumer ( Queue<Integer> primes ) {
		super();
		primes_ = primes;
		shutdown_ = false;
	}

	public void shutdown () {
		shutdown_ = true;
	}

	/*
	 * (non-Javadoc)
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run () {
		for ( ; !shutdown_ ; ) {
			try {
				synchronized ( primes_ ) {
					if ( primes_.isEmpty() ) {
						primes_.wait();
					} else {
						System.out.println("  " + Thread.currentThread().getName()
						    + " got " + primes_.remove());
					}
				}
			} catch ( InterruptedException e ) {}
		}
	}

}
