class CubbyHole { private int seq; // this is the condition variable. private boolean available = false; public synchronized int get() { while (available == false) { try { wait(); } catch (InterruptedException e) { } } available = false; notify(); return seq; } public synchronized void put(int value) { while (available == true) { try { wait(); } catch (InterruptedException e) { } } seq = value; available = true; notify(); } }