zoukankan      html  css  js  c++  java
  • spring的全流程

    手写生产者和消费者

    使用object的wait和notify方法

    生产者

    import java.util.List;
    
    public class Producer implements Runnable {
    
        private List<String> queue;
    
        public void run() {
            synchronized (queue) {
                while (true) {
                    while (queue.size() == MqTest.MAX_COUNT) {
                        try {
                            queue.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(Thread.currentThread().getName() + "在生产!!!!");
                    queue.add(String.valueOf(Math.random()));
                    queue.notifyAll();
                }
            }
        }
    
        public List<String> getQueue() {
            return queue;
        }
    
        public void setQueue(List<String> queue) {
            this.queue = queue;
        }
    }
    

      

    消费者

    import java.util.List;
    
    public class Comsumer implements Runnable {
        private List<String> queue;
    
        public void setQueue(List<String> queue) {
            this.queue = queue;
        }
    
        public List<String> getQueue() {
            return queue;
        }
    
        public void run() {
            synchronized (queue) {
                while (true) {
                    while (queue.size() == 0) {
                        try {
                            queue.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(Thread.currentThread().getName() + "在消费!!!!");
                    queue.remove(0);
                    queue.notifyAll();
                }
    
            }
        }
    }

    生产过程

    import java.util.ArrayList;
    import java.util.List;
    
    public class MqTest {
    
        public static final int MAX_COUNT = 10;
    
        public static void main(String[] args) {
            List<String> queue = new ArrayList<String>();
            Producer producer = new Producer();
            producer.setQueue(queue);
            Thread t1 = new Thread(producer);
            t1.setName("生产者1");
    
            Producer producer1 = new Producer();
            producer1.setQueue(queue);
            Thread t3 = new Thread(producer1);
            t3.setName("生产者2");
    
            Producer producer2 = new Producer();
            producer2.setQueue(queue);
            Thread t4 = new Thread(producer2);
            t4.setName("生产者3");
    
    
    
            Comsumer comsumer = new Comsumer();
            comsumer.setQueue(queue);
    
    
            Thread t2 = new Thread(comsumer);
            t2.setName("消费者1");
    
            Comsumer comsumer1 = new Comsumer();
            comsumer1.setQueue(queue);
    
    
            Thread t5 = new Thread(comsumer1);
            t5.setName("消费者2");
    
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            t5.start();
        }
    }
  • 相关阅读:
    JS 中 this 关键字详解
    Excel 文本函数
    Excel 日期和时间函数
    Excel引用和数学函数
    Excel-查找函数
    Excel-统计函数
    数据分析-业务知识
    Excel-逻辑函数
    Excel-基本操作
    电商数据分析总结
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/11997224.html
Copyright © 2011-2022 走看看