当前位置: 首页 > article >正文

测试-感受生产者消费者模型-阻塞队列

    @Test
    public void test() throws InterruptedException {
        // 创建一个阻塞队列
        // 编写1个生产者-3个消费者的模型
        BlockingQueue<String> queue = new ArrayBlockingQueue<>(3);

        // 1个生产者
        new Thread(() -> {
            // 生产20个元素
            for (int i = 0; i < 20; i++) {
                try {
                    // 生产元素如果满了阻塞等待
                    queue.put("元素_"+i);
                    System.out.println("生产者生产元素: " + i);
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }).start();

        // 3个消费者
        for (int i = 0; i < 3; i++) {
            final int index = i;
            new Thread(() -> {
                while (true){
                    try {
                        // 消费元素,如果队列为空阻塞等待
                        System.out.println("消费者"+index+"消费元素: " + queue.take());
                        Thread.sleep(5000);// 延迟一下
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }).start();
        }

        Thread.sleep(40000);// 延迟30s,防止程序提前结束,导致消费者没有消费完毕
    }

打印如下:

生产者生产元素: 0
消费者0消费元素: 元素_0
生产者生产元素: 1
消费者2消费元素: 元素_1
~
~
~
生产者生产元素: 19
消费者1消费元素: 元素_17
消费者0消费元素: 元素_18
消费者2消费元素: 元素_19


http://www.kler.cn/a/152625.html

相关文章:

  • 【关于Ubuntu换源的问题】/Ubuntu 软件更新和ros软件包定位
  • MFC设置状态栏文本导致崩溃的原因
  • @ResponseBody详解:用于响应体响应数据
  • WT2605-24SS高品质录音语音芯片:实现五种变音效果,为音频应用增添无限创意
  • PGSQL(PostgreSQL)数据库安装教程
  • 【广州华锐互动】节约用水VR互动教育:身临其境体验水资源的珍贵!
  • SQL面试题,判断if的实战应用
  • 腾讯面试笔试题2023.11.30
  • 持续集成部署-k8s-配置与存储-配置管理:配置文件不可变
  • Web 安全之 X-XSS-Protection 详解
  • Elasticsearch:使用 ILM 示例运行降采样 (downsampling)
  • 深入学习redis-基于Jedis通过客户端操作Redis
  • SQL Sever 基础知识 - 数据排序
  • torch常用和预期输入输出
  • 3D点云目标检测:VoxelNex解读
  • WordPress:构建强大的网站和博客的完美选择
  • k8s ingress 无法找到端点
  • 机器学习的复习笔记3-回归的细谈
  • 芯片技术探索:了解构芯片的设计与制造之旅
  • 竞赛选题 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛选题 代码