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();
        }
    }

  • 相关阅读:
    mouseover和mouseenter的区别 mouseenter不会冒泡,mouseleave不会冒泡;
    2021年1月24日 命令按钮控件Button 和 单选按钮控件RadioButton 和复选框按钮
    2021年1月23日 文本框控件
    2021年1月21日 画了个注册的界面
    2021年1月29日 体温上报app03
    2021年1月18日 activity的三种状态
    2021年1月16日 秒表app
    2021年1月15日 界面跳转
    1.CSS知识点——css的引入方式
    面试题 315
  • 原文地址:https://www.cnblogs.com/liumy/p/11587576.html
Copyright © 2011-2022 走看看