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

    }

    }
  • 相关阅读:
    上传文件漏洞(上传绕过)
    不安全的直接对象引用漏洞(浅析)
    python socket介绍
    python新手灰帽脚本练习---简易端口扫描
    python新手灰帽脚本练习---文件路径遍历收集
    python socket编程中端口被占用的解决方法(转载)
    .net core 使用功能总结
    Python学习计划整理
    Javascript 日期转换 几天前
    学习网站
  • 原文地址:https://www.cnblogs.com/toov5/p/8888657.html
Copyright © 2011-2022 走看看