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

    }

    }
  • 相关阅读:
    SAP Cloud for Customer Sales Lead明细页面视图的UI模型
    如何基于SAP CDS view创建OData服务
    使用SAP HANA Web-based Development工具进行SQLScript练习
    SAP ABAP守护进程(ABAP Daemon)的实现方式
    使用SAP云平台Mobile Service开发移动应用
    SAP CRM WebClient UI Excel Export的运行时执行明细
    MySQL里面的子查询实例
    hash_hmac 签名
    redis单例模式写法
    jQuery 短信验证码倒计时
  • 原文地址:https://www.cnblogs.com/toov5/p/8888657.html
Copyright © 2011-2022 走看看