生产者消费者

模拟 生产者生产产品  放到天猫    消费者去天猫消费

Tmail

public class Tmail {

    private  int count;

    public  final int MAX_COUNT = 10;

    public synchronized void push(){
        while (count >= MAX_COUNT) {
            try {
                System.out.println(Thread.currentThread().getName() + "库存达到上线,生产者stop");
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
            count++;
            System.out.println(Thread.currentThread().getName()+"生产者生产,当前库存为:"+count);
            notifyAll();

    }
    public synchronized void take(){
        while (count <= 0){
            try {
                System.out.println(Thread.currentThread().getName()+"库存数量为零,消费者等待");
                wait();
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
        count--;
        System.out.println(Thread.currentThread().getName()+"消费者消费,当前库存为:"+count);
        notifyAll();
    }

}

  PushTarget

public class PushTarget implements  Runnable {

     private Tmail tmail;

     public PushTarget(Tmail tmail){
         this.tmail=tmail;
     }

    public void run() {
        while (true) {
            tmail.push();
            try {
                Thread.sleep(1000);
            }catch (InterruptedException e){
                e.printStackTrace();
            }

        }
    }
}

  TakeTarget

public class TakeTarget implements  Runnable {
   private  Tmail tmail;
   public  TakeTarget(Tmail tmail){
       this.tmail = tmail;
   }
    public void run() {
        while (true) {
            tmail.take();
            try {
                Thread.sleep(1000);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }

}

  Test

public class Test {

public static void main(String[] args){
Tmail tmail = new Tmail();
PushTarget p = new PushTarget(tmail);
TakeTarget t = new TakeTarget(tmail);

new Thread(p).start();
new Thread(p).start();
new Thread(p).start();
new Thread(p).start();
new Thread(p).start();

new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();

}

}
原文地址:https://www.cnblogs.com/toov5/p/8888657.html