设计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(); |
|