zoukankan      html  css  js  c++  java
  • Java生产者/消费者模型

    package gj.concurrent.customerproducer;
    
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.BlockingQueue;
    
    /**
     * Author: areful
     */
    public class ProducerConsumerSample {
        private static class Producer implements Runnable {
            private final BlockingQueue<Object> queue;
    
            private Producer(BlockingQueue<Object> q) {
                queue = q;
            }
    
            public void run() {
                try {
                    while (true) {
                        queue.put(produce());
                    }
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
    
            private Object produce() {
                return "producing a new object: " + new Object();
            }
        }
    
        private static class Consumer implements Runnable {
            private final BlockingQueue queue;
    
            private Consumer(BlockingQueue q) {
                queue = q;
            }
    
            public void run() {
                try {
                    while (true) {
                        consume(queue.take());
                    }
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
    
            private void consume(Object x) {
                System.out.println("consuming object: " + x);
            }
        }
    
        public static void main(String[] args) {
            BlockingQueue<Object> q = new ArrayBlockingQueue<>(10);
            Producer p = new Producer(q);
            Consumer c1 = new Consumer(q);
            Consumer c2 = new Consumer(q);
            new Thread(p).start();
            new Thread(c1).start();
            new Thread(c2).start();
        }
    }
    

      

  • 相关阅读:
    ASP.NET应用程序与页面生命周期
    阻塞分析
    性能和异常日志
    solr 搜索引擎及搜索推荐应用
    solr 搜索引擎
    分布式缓存地址
    Windows平台分布式架构实践
    职责链模式vs状态模式区别
    HBase
    单例模式
  • 原文地址:https://www.cnblogs.com/areful/p/10395793.html
Copyright © 2011-2022 走看看