public class Consumer extends Thread{
private String name;
private Storage s;
public Consumer(String n,Storage s){
name=n;
this.s =s ;
}
public void run(){
while(true){
s.delData(name);
try{
//Thread.sleep(1000);
Thread.sleep((int)(Math.random()*5000));
}catch(Exception e){
}
}
}
}
public class Producer extends Thread{
private String name;
private Storage s;
public Producer(String n,Storage s){
name=n;
this.s =s ;
}
public void run(){
while(true){
s.addData(name);
try{
//Thread.sleep(1000);
Thread.sleep((int)(Math.random()*5000));
}catch(Exception e){
}
}
}
}
public class Storage{
private int count;
private int size;
public Storage(int i){
size=i;
}
public synchronized void addData(String n){
while(count==size){
try{
this.wait();
System.out.println("Producer waiting !!!!!!");
}catch(Exception e){
}
}
this.notify();
count++;
System.out.println(n+"make data ..."+count);
}
public synchronized void delData(String n){
while(count==0){
try{
this.wait();
System.out.println("Consumer waiting !!!!!!");
}catch(Exception e){}
}
this.notify();
count--;
System.out.println(n+"use data !!!"+count);
}
}
public class Test{
public static void main(String []args){
Storage s = new Storage(10);
Producer p = new Producer("producer",s);
Consumer c = new Consumer("consumer",s);
c.start();
p.start();
new Consumer("tt",s).start();
new Consumer("tt",s).start();
}
}
来自:http://chenhongbin007.blog.163.com/blog/static/340699212009321112052382/