producerconsumertest.java

来自「java课件 java课件 java课件 java课件」· Java 代码 · 共 71 行

JAVA
71
字号
class CubbyHole{
  private int content ;
  private boolean available=false;
public synchronized void put(int value){
 while(available==true){
   try{
wait();
}catch(InterruptedException e){}
} 
content =value;
available=true;
notifyAll();
}
  public synchronized int get(){
   while(available==false){
  try{
wait();
}catch(InterruptedException e){}
        }
available=false;
notifyAll();
return content;
} 
}


class Producer extends Thread {
    private CubbyHole cubbyhole;
    private int number;
    public Producer(CubbyHole c, int number) {
        cubbyhole = c;
        this.number = number;
    }
    public void run() {
       for (int i = 0; i < 10; i++) {
          cubbyhole.put(i);
          System.out.println("Producer #" + this.number + " put: " + i);
          try {
                sleep((int)(Math.random() * 100));
           } catch (InterruptedException e) { }
        }
    }
}

class Consumer extends Thread {
    private CubbyHole cubbyhole;
    private int number;
    public Consumer(CubbyHole c, int number) {
        cubbyhole = c;
        this.number = number;
    }
    public void run() {
        int value = 0;
        for (int i = 0; i < 10; i++) {
            value = cubbyhole.get();
      System.out.println("Consumer #" + this.number + " got: " + value);
        }
    }
}


public class ProducerConsumerTest {
    public static void main(String[] args) {
        CubbyHole c = new CubbyHole();
        Producer p1 = new Producer(c, 1);
        Consumer c1 = new Consumer(c, 1);
        p1.start();
        c1.start();
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?