zoukankan      html  css  js  c++  java
  • 快速实现一个生产者-消费者模型demo

    package jesse.test1;
    
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.BlockingQueue;
    
    // 生产者
    class Producer implements Runnable{
        private BlockingQueue<String> queue;
        
        public Producer(BlockingQueue<String> queue) {
            super();
            this.queue = queue;
        }
    
        @Override
        public void run() {
            for (int i = 0; i < 20; i++) {
                try {
                    Thread.sleep(10L);
                    String msg = "msg"+i;
                    System.out.println("Produce new item: "+msg);
                    queue.put(msg);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            try {
                System.out.println("Time to say goodbye");
                queue.put(ProducerConsumerModel.EXIT_MSG);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        
    }
    
    //消费者
    class Consumer implements Runnable{
        private BlockingQueue<String> queue;
        
        public Consumer(BlockingQueue<String> queue){
            this.queue = queue;
        }
        
        @Override
        public void run() {
            try {
                String msg ;
           //取值即判断 while(!ProducerConsumerModel.EXIT_MSG.equals(msg=queue.take())){ System.out.println("Consumed item: "+ msg); Thread.sleep(15L); } System.out.println("Exit."); } catch (InterruptedException e) { e.printStackTrace(); } } } public class ProducerConsumerModel { public final static String EXIT_MSG="bye"; public static void main(String[] args) { BlockingQueue<String> queue = new ArrayBlockingQueue<String>(5); Producer producer = new Producer(queue); Consumer consumer = new Consumer(queue); new Thread(producer).start(); new Thread(consumer).start(); } }

      

  • 相关阅读:
    鼠标滑过,解决ul下 li下a的背景与父级Li不同宽的问题
    php函数
    常用函数之数组函数
    php流程控制
    php运算符
    php常量
    php变量的数据类型
    PHP是什么
    css3新增属性
    html5的常用标签
  • 原文地址:https://www.cnblogs.com/atomicbomb/p/9965145.html
Copyright © 2011-2022 走看看