zoukankan      html  css  js  c++  java
  • 生产者消费者

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

    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();

    }

    }
  • 相关阅读:
    为经典版eclipse增加web and JavaEE插件
    类型之间进行隐式和显示转换&创建使用枚举&创建使用结构类型&创建使用数组&;如何处理字符串值
    VS2013秘钥
    VS2013快捷键大全
    2016年4月20日开会学习
    随机验证码.ashx
    关于代码开发的一些心得
    C#list泛型的定义,作用,用法
    String,StringBuffer与StringBuilder的区别??
    C# DataTable的详细用法
  • 原文地址:https://www.cnblogs.com/toov5/p/8888657.html
Copyright © 2011-2022 走看看