zoukankan      html  css  js  c++  java
  • java 双端队列 Deque

    简单的实现生产者消费者模式。

    package com.citi.test.mutiplethread.demo0503;
    
    import java.util.Arrays;
    import java.util.UUID;
    import java.util.concurrent.LinkedBlockingDeque;
    
    public class ProducerDeque implements Runnable{
        private LinkedBlockingDeque<String> deque;
        
        public ProducerDeque(LinkedBlockingDeque<String> deque) {
            this.deque=deque;
        }
    
        @Override
        public void run() {
            while(true){
                try {
                    String str=UUID.randomUUID().toString();
                    System.out.println(Thread.currentThread().getName()+"生产了:"+str);
                    deque.putFirst(str);
                    System.out.println(Thread.currentThread().getName()+"生产了:"+Arrays.toString(deque.toArray()));
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
    }
    package com.citi.test.mutiplethread.demo0503;
    
    import java.util.concurrent.LinkedBlockingDeque;
    
    public class ConsumerDeque implements Runnable{
    
        private LinkedBlockingDeque<String> deque;
        public ConsumerDeque(LinkedBlockingDeque<String> deque) {
            this.deque = deque;
        }
    
        @Override
        public void run() {
            while(true){
                try {
                    System.out.println(Thread.currentThread().getName()+"消费了:"+deque.takeLast());
                    Thread.sleep(800);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
    
    }
    package com.citi.test.mutiplethread.demo0503;
    
    import java.util.concurrent.LinkedBlockingDeque;
    
    public class LinkedBlockingDequeTest {
        public static void main(String[] args) {
            LinkedBlockingDeque<String> producerDeque=new LinkedBlockingDeque<String>();
            
            new Thread(new ProducerDeque(producerDeque)).start();
            new Thread(new ProducerDeque(producerDeque)).start();
            new Thread(new ProducerDeque(producerDeque)).start();
            new Thread(new ProducerDeque(producerDeque)).start();
            
            new Thread(new ConsumerDeque(producerDeque)).start();
        }
    }

  • 相关阅读:
    不要给技术人员做绩效
    软件开发项目的风险
    cxgrid在当前View插入记录
    cxgrid根据单元的值设置样式
    有锐捷客户端的情况下用虚拟机照样上网
    cxgrid在内置右键菜单的后面增加菜单项
    cxgrid按条件计算合计值
    cxgrid在内置右键菜单的后面增加菜单项
    微信小程序弹窗 Mr
    虚拟环境的创建 Mr
  • 原文地址:https://www.cnblogs.com/liumy/p/11587576.html
Copyright © 2011-2022 走看看