zoukankan      html  css  js  c++  java
  • 生产者消费者-Java代码实现

    import java.util.LinkedList;
    
    class Storage{
        private static final int MAX = 100;
        LinkedList<Object> list = new LinkedList<>();
    
        public void produce(int num) throws Exception{
            synchronized(list){
                while(list.size() + num > MAX){
                    System.out.println("仓库太小,生产装不下!!");
                    list.wait();
                }
                for(int i=0; i<num; i++)
                    list.add(new Object());
                System.out.println("生产了---" + num);
                list.notifyAll();
            }
        }
        public void consume(int num) throws Exception{
            synchronized(list){
                while(list.size() < num){
                    System.out.println("仓库的库存不够");
                    list.wait();
                }
                for(int i=0; i<num; i++)
                    list.remove();
                System.out.println("消费了---" + num);
                list.notifyAll();
            }
        }
    }
    
    class Producer implements Runnable{
        private int num;
        private Storage storage;
        public Producer(int num, Storage storage){
            this.num = num;
            this.storage = storage;
        }
        public void produce(){
            try{
                storage.produce(num);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        public void run(){
            produce();
        }
    }
    
    class Consumer implements Runnable{
        private int num;
        private Storage storage;
        public Consumer(int num, Storage storage){
            this.num = num;
            this.storage = storage;
        }
        public void consume(){
            try{
                storage.consume(num);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        public void run(){
            consume();
        }
    }
    
    public class Pro_Con{
        public static void main(String[] args){
            Storage st = new Storage();
    
            Producer p1 = new Producer(10, st);
            Producer p2 = new Producer(80, st);
    
            Consumer c1 = new Consumer(40, st);
            Consumer c2 = new Consumer(70, st);
    
            new Thread(c1, "消费者1").start();
            new Thread(c2, "消费者2").start();
            new Thread(p1, "生产者2").start();
            new Thread(p2, "生产者2").start();
        }
    }
    
  • 相关阅读:
    机器学习-数据表达与特征工程
    机器学习-朴素贝叶斯算法
    机器学习之广义线性模型
    机器学习-MNIST数据集使用二分类
    机器学习-数据预处理、降维、特征提取及聚类
    机器学习-神经网络
    机器学习-向量机SVM
    机器学习-决策树与随机森林
    深入计算机原理——第三章机器级的表示(三)
    深入计算机原理——第三章机器级的表示(二)
  • 原文地址:https://www.cnblogs.com/lanqiu5ge/p/9453601.html
Copyright © 2011-2022 走看看