生产者和消费者

用Java语言实现消费者和生产者,运用到中介者模式

生产者:

class Producer extends Thread {
	private Mediator med; //生产者仅仅连接中介者
	private int id;
	private static int num = 1; //静态全局变量
	public Producer (Mediator m) {
		med = m;
		id = num++; }
	public void run () {
		int num;
		while (true) {
			med.storeMessage (num = (int) (Math.random () * 100));
			//显示信息生产者的ID及其信息
			System.out.print ("p" + id + "-" + num + "   ");
		} 
	}
}

消费者:

class Consumer extends Thread {
	private Mediator med; // 消费者(信息接收者)也仅仅连接中介者
	private int id;
	private static int num = 1;

	public Consumer(Mediator m) {
		med = m;
		id = num++;
	}

	public void run() {
		while (true) {
			// 显示信息生产者的ID及其信息
			System.out.print("c" + id + "-" + med.retrieveMessage() + "   ");
		}
	}
}

中介者:

class Mediator {
  private int number;//存储槽
  private boolean slotFull = false;
    //同步化,避免两个线程同时执行
  public synchronized void storeMessage (int num) {
    while (slotFull == true)//存储槽没有空间了
      try {wait ();}
      catch (InterruptedException e) {}
    slotFull = true;
    number = num;
    notifyAll ();
  }
 public synchronized int retrieveMessage () {
    while (slotFull == false) //存储槽空信息
      try { wait ();
      } catch (InterruptedException e) {}
    slotFull = false;
    notifyAll ();
    return number;
  }
}


你可能感兴趣的:(中介者模式,消费者与生产者问题)