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

  • 相关阅读:
    0401-服务注册与发现、Eureka简介
    001-OSI七层模型,TCP/IP五层模型
    云原生应用开发12-Factors
    0301-服务提供者与服务消费者
    0201-开始使用Spring Cloud实战微服务准备工作
    0107-将Monolith重构为微服务
    0106-选择微服务部署策略
    0105-微服务的事件驱动的数据管理
    0104-微服务体系结构中的服务发现
    0103-微服务架构中的进程间通信
  • 原文地址:https://www.cnblogs.com/liumy/p/11587576.html
Copyright © 2011-2022 走看看