问问大佬们 (1)class ZeroEvenOdd {private int n;ReentrantLock lock = new ReentrantLock(true);private int x = 1;private boolean isZero = true;private Condition condition = lock.newCondition();public ZeroEvenOdd(int n) {this.n = n;}// printNumber.accept(x) outputs &quot;x&quot;, where x is an integer.public void zero(IntConsumer printNumber) throws InterruptedException {while(x <= n){lock.lock();if(isZero&amp;&amp;x <= n){printNumber.accept(0);isZero = false;condition.signalAll();}else{condition.await();}lock.unlock();}}public void even(IntConsumer printNumber) throws InterruptedException {while(x <= n){lock.lock();if(!isZero &amp;&amp; x%2 == 0){printNumber.accept(x);x++;isZero = true;condition.signalAll();}else{condition.await();}lock.unlock();}}public void odd(IntConsumer printNumber) throws InterruptedException {while(x <= n){lock.lock();if(!isZero &amp;&amp; x%2 == 1){printNumber.accept(x);x++;isZero = true;condition.signalAll();}else{condition.await();}lock.unlock();}}}(2)class ZeroEvenOdd {private final int n;private int x = 1;// true: 打印0 false: 不打印0private boolean isZero = true;public ZeroEvenOdd(int n) {this.n = n;}public void zero(IntConsumer printNumber) throws InterruptedException {while (x <= n) {synchronized (this) {if (isZero) {printNumber.accept(0);isZero = false;this.notifyAll();} else {this.wait();}}}}public void even(IntConsumer printNumber) throws InterruptedException {while (x <= n) {synchronized (this) {if (x % 2 == 0 &amp;&amp; !isZero) {printNumber.accept(x);isZero = true;x++;this.notifyAll();} else {this.wait();}}}}public void odd(IntConsumer printNumber) throws InterruptedException {while (x <= n) {synchronized (this) {if (x % 2 != 0 &amp;&amp; !isZero) {printNumber.accept(x);isZero = true;x++;this.notifyAll();} else {this.wait();}}}}}为什么(1)代码最后可能多输出一个0。(2)代码不会