• 多线程设计模式


    future 模式

    生产者-消费者模式

    生产者-消费者模式是一个经典的多线程设计模式。它为多线程间的协作提供了良好的解决方案。 在生产者-消费者模式中,通常由两类线程,即若干个生产者线程和若干个消费者线程。生产者线 程负责提交用户请求,消费者线程则负责具体处理生产者提交的任务。生产者和消费者之间则通 过共享内存缓冲区进行通信。

    .生产着消费者模式特点

    1.解耦,生产者干生产者的事情,消费者干消费者的事情
    
    2.支持高并发,可以同时多个生成,多个消费,互不影响

    package com.thread.pc.blockingqueue;
    
    import java.util.UUID;
    import java.util.concurrent.BlockingQueue;
    /**
     * 仓库
     * @author yyx 2018年12月22日
     */
    public class Warehouse {
        private final int MAX_SIZE = 10;
        private BlockingQueue<Product> blockingQueue;
    
        public Warehouse(BlockingQueue<Product> blockingQueue) {
            super();
            this.blockingQueue = blockingQueue;
        }
    
        public void addProduct() {
            String currentName = Thread.currentThread().getName();
            if (blockingQueue.size() >= MAX_SIZE) {
                System.out.println("产品列表已满,不再生产!" + currentName + "进入等待");
            } else {
                Product product = new Product(UUID.randomUUID());
                System.out.println(currentName + "生产了一个产品,它的编号是:" + product.getProCode().toString());
                try {
                    blockingQueue.put(product);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public void removeProduct() {
            String currentName = Thread.currentThread().getName();
            if (blockingQueue.size() <= 0) {
                System.out.println("产品列表不足,不再消费!" + currentName + "进入等待");
            } else {
                try {
                    Product product = blockingQueue.take();
                    System.out.println(currentName + "消费了一个产品,它的编号是:" + product.getProCode().toString());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    jsp Servlet 3.0文件上传
    Android 模拟多线程下载
    Android之Handler用法总结
    Android 手机模拟器安卓软件
    Json笔记
    java.lang.ClassNotFoundException: com.google.gson.Gson”
    关于MD5加密
    Android 抽屉布局
    Android ListView 适配器
    如何在安裝SELinux的环境执行Quartus II
  • 原文地址:https://www.cnblogs.com/dingpeng9055/p/11282214.html
Copyright © 2020-2023  润新知