A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

设计4个线程,其中2个线程每次对k加1,另外2个线程减1,并且k<1不能减

技术要求:1、任务1:k-1
          2、任务2:k-2
          3、任务1与任务2存在关联
          4、线程间存在协作
技术要点:1、使用synchronzied
          2、wait()和notify()
          3、注意阻塞和唤醒的条件

class Operation{
    private int i = 0;
    public synchronzied void increment(){
        k++;
        while(k==1) this.notify();
    }   
    public synchronzied void decrement(){
        while(k < 1) this.wait();
        k--;
    }
}

//main()
Operation op = new Operation();
new Thread(new Runnable(){op.increment()}).start();
new Thread(new Runnable(){op.increment()}).start();
new Thread(new Runnable(){op.decrement()}).start();
new Thread(new Runnable(){op.decrement()}).start();

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马