// printNumber.accept(x) outputs "x", where x is an integer. publicvoidzero(IntConsumer printNumber)throws InterruptedException { for (inti=0; i < n; i++) { synchronized (lock) { while (!shouldPrintZero) { lock.wait(); }
printNumber.accept(0);
shouldPrintZero = false; lock.notifyAll(); } } }
publicvoideven(IntConsumer printNumber)throws InterruptedException { for (inti=2; i <= n; i += 2) { synchronized (lock) { while (shouldPrintZero || shouldPrintOdd) { lock.wait(); }