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();
        }
    }
  • 相关阅读:
    OneNote2007产品密钥及激活方法
    穿着马甲的编码方式链式
    String 转换NameValueCollection 的方法 , 这是原创 嘎嘎
    TransactionScope分布式事务无法使用时, 配置并启动 MSDTC 的解决方案
    Spirit越狱3.1.3/3.2固件(Windows)
    智能感知 不正常的解决方法
    HttpHandler HttpModule入门篇
    Microsoft.Practices.Unity依赖注入使用实例
    ViewEngine 深入解析与应用实例
    打开chm文件提示“已取消到该网页的导航”的解决方案
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/11997224.html
Copyright © 2011-2022 走看看