java 中的线程同步问题,如下代码是放苹果和吃苹果的线程同步,但一次只能放一个,如何做到一次可以放三个??救助大神!!
package com.aiit.app;
//能够实现同步 jdk1.0
public class SynchronizedPlate implements IBuffer{
private int value ; //只有1个盘子来完成同步
// private int [] values = new int[3];//
private boolean isEmpty ; //false
@Override
public synchronized void set(int value) { //向盘子中放东西
//先要判断盘子是否为空
while(isEmpty) { //开始
System.out.println("生产者线程尝试向盘子中放数据");
System.out.println("isEmpty="+this.isEmpty+",value=" + this.value);
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//可以放东西了
this.value = value ;
System.out.println("生产者向盘子中放了数据,值是:" + this.value);
//改变这个盘子的状态
this.isEmpty = true ;
//通知正在等待的消费者线程
this.notifyAll();
}
@Override
public synchronized int get() {
while(!isEmpty) {
System.out.println("消费者线程尝试从盘子中取数据....");
System.out.println("isEmpty="+this.isEmpty+",value=" + this.value);
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}//结束
int newValue = this.value ;
System.out.println("消费者从向盘子中取了数据,值是:" + newValue);
this.isEmpty = false ; //盘子变成空的
//通知生产者线程,你可以放数据了
this.notify();
return newValue;
}
}
http://www.cnblogs.com/phinecos/archive/2010/03/13/1684877.html