zoukankan      html  css  js  c++  java
  • wait,notify,非阻塞队列实现生产者,消费者模型

    import java.util.PriorityQueue;
    
    /**
     * @author wangpei
     * @version 创建时间:2017年4月20日 下午5:01:44 生产者消费者模型的wait,notify实现
     */
    public class ShengChanZhe {
        private int size = 10;// 初始化非阻塞队列的长度为10
        PriorityQueue<Object> p = new PriorityQueue(size);// 构建非阻塞队列
    
        public static void main(String[] args) {
            ShengChanZhe ac = new ShengChanZhe();
            product p = ac.new product();
            consume c = ac.new consume();
            Thread thread1 = new Thread(p);
            Thread thread2 = new Thread(c);
            thread1.start();
            thread2.start();
    
        }
    
        class product implements Runnable {// 生产者
            public product() {
    
            }
    
            @Override
            public void run() {
                synchronized (p) {
                    while (true) {
                        if (p.size() == size) {// 队列为满
                            try {
                                p.wait();// 队列阻塞
                            } catch (InterruptedException e) {
                                p.notify();
                                e.printStackTrace();
    
                            }
    
                        }
                        p.offer(1);// 生产一个值
                        System.out.println("我生产出了一个元素");
                        p.notify();
                    }
    
                }
    
            }
    
        }
    
        class consume implements Runnable {
    
            @Override
            public void run() {
                synchronized (p) {
                    while (true) {
                        if (p.size() == 0) {// 队列为空
                            try {
                                p.wait();
                            } catch (InterruptedException e) {
                                p.notify();
                                e.printStackTrace();
                            }
    
                        }
                        p.poll();
                        System.out.println("我消费了一个元素");
                        p.notify();
                    }
    
                }
    
            }
        }
    
    }
    
  • 相关阅读:
    IfcStructuralLoadTemperature
    IfcSurfaceReinforcementArea
    IfcRepresentationContextSameWCS
    IfcModulusOfTranslationalSubgradeReactionSelect
    opencv形态学操作
    IfcRotationalStiffnessSelect
    IfcTranslationalStiffnessSelect
    IfcWarpingStiffnessSelect
    win10 nvidia环境配置
    yolov5单图片检测
  • 原文地址:https://www.cnblogs.com/wangxiaopei/p/8551210.html
Copyright © 2011-2022 走看看