讨论/题目交流/多线程 1116. 打印零与奇偶数 /
多线程 1116. 打印零与奇偶数

这样写为什么不对呢?请高手赐教。

class ZeroEvenOdd {
    private int n;
  
    private int m ;
    

    public ZeroEvenOdd(int n) {
        this.n = n;
      this.m = 1 ;
    }

    // printNumber.accept(x) outputs "x", where x is an integer.
    public void zero(IntConsumer printNumber) throws InterruptedException {
      
      synchronized(this){
          while(m<=2*n){
          while(!((m&1) == 1)){
            wait();
          }
          printNumber.accept(0);
          m++;
          notifyAll();
        }
      }
        
    }

    public void even(IntConsumer printNumber) throws InterruptedException {
      
        synchronized(this){
          while(m<=2*n){
          while(!(((m&1) == 0) && ((m/2)&1) == 1)){
            wait();
          }
          printNumber.accept(m/2);
          m++;
          notifyAll();
        }
      }
     
    }

    public void odd(IntConsumer printNumber) throws InterruptedException {
     
        synchronized(this){
          while(m<=2*n){
          while(!(((m&1) == 0) && ((m/2)&1) == 0)){
            wait();
          }
          printNumber.accept(m/2);
          m++;
          notifyAll();
        }
      }
    }
          
}
展开讨论
自闭玩家不想说话发起于 2019-08-22
共 0 个讨论
无讨论