【多线程高并发】-Java使用阻塞队列ArrayBlockingQueue实现生产者消费者模式?
发布日期:2021-06-29 15:36:26
浏览次数:2
分类:技术文章
本文共 1211 字,大约阅读时间需要 4 分钟。
在上文中的多线程高并发中,我们已经知道一个阻塞队列的三个基本功能了:
- 队列的先进先出功能;
- 队列满时,放数据会被阻塞;
- 队列空时,取数据会被阻塞;
而本次用Java实现好的ArrayBlockQueue来实现生产者-消费者模式。
- 生产者往队列里面放东西;
- 消费者从队列里面取东西;
package com.lcz.tencent.thread;import java.util.concurrent.ArrayBlockingQueue;// 阻塞队列实现多线程下的生产者和消费者模式public class ArrayBlockQueueDemo { static ArrayBlockingQueuequeue = new ArrayBlockingQueue<>(1); // 主函数 public static void main(String[] args) { // 生产者 for(int i=0;i<3;i++) { new Thread(()->producer(),"producerThread" + i).start(); } // 消费者 for(int i=0;i<3;i++) { new Thread(()->consumer(),"consumerThread" + i).start(); } } // 生产者 public static void producer() { for(int i=0;i<100;i++) { try { queue.put("[" + i + "]"); System.out.println(Thread.currentThread().getName() + "->send msg" + i); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // 消费者 public static void consumer() { // 队列只要有数据就往走 while(true) { try { String msg = queue.take(); System.out.println(Thread.currentThread().getName()+"->receive msg:" + msg); }catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } } }
转载地址:https://codingchaozhang.blog.csdn.net/article/details/115801928 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月09日 05时51分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
通过libjpeg-turbo实现对jpeg图像的解码
2019-04-29
More Effective C++35个改善编程与设计的有效方法笔记
2019-04-29
Linux下通过v4l2获取视频设备名、支持的编解码及视频size列表实现
2019-04-29
Effective STL 50条有效使用STL的经验笔记
2019-04-29
FFmpeg在Windows上通过dshow编解码方式设置为mjpeg并实时显示测试代码
2019-04-29
Linux下获取usb视频设备vendor id和product id的8种方法
2019-04-29
视频编解码类型MJPEG数据格式介绍
2019-04-29
Windows上VS2017单步调试FFmpeg源码的方法
2019-04-29
C++中关键字volatile和mutable用法
2019-04-29
C++11中std::future的使用
2019-04-29
C++11中std::shared_future的使用
2019-04-29
C++11中std::promise的使用
2019-04-29
C++11中std::packaged_task的使用
2019-04-29
C++11中std::async的使用
2019-04-29
从FFmpeg 4. 2源码中提取dshow mjpeg code步骤
2019-04-29
Windows 7 64位机上搭建Android开发环境
2019-04-29
Doxygen使用介绍
2019-04-29
开源库BearSSL介绍及使用
2019-04-29