博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java BlockingQueue methods
阅读量:2342 次
发布时间:2019-05-10

本文共 1363 字,大约阅读时间需要 4 分钟。

BlockingQueue方法有四种形式,其处理操作的方式不同,不能立即满足,但可能在将来某个时候满足:

第一种方法抛出异常

第二种方法返回特殊值(根据操作的不同,可以为null或false)

第三种在操作成功之前无限期阻塞当前线程

第四种在放弃之前仅阻塞给定的最大时间限制,设置阻塞超时时间

下表总结了这些方法:

使用阻塞队列实现多生产者-多消费者模型

class Producer implements Runnable {    private final BlockingQueue queue;    Producer(BlockingQueue q) { queue = q; }    public void run() {        try {            while (true) { queue.put(produce()); }        } catch (InterruptedException ex) {            ex.printStackTrace();        }    }    Object produce() {        System.out.println(Thread.currentThread().getName() + "线程生产");        return "product";    }}class Consumer implements Runnable {    private final BlockingQueue queue;    Consumer(BlockingQueue q) { queue = q; }    public void run() {        try {            while (true) { consume(queue.take()); }        } catch (InterruptedException ex) {            ex.printStackTrace();        }    }    void consume(Object x) {        System.out.println(Thread.currentThread().getName() + "线程消费:"+ x);    }}class Setup {    void main() {        BlockingQueue q = new LinkedBlockingQueue(2);        Producer p1 = new Producer(q);        Producer p2 = new Producer(q);        Consumer c1 = new Consumer(q);        Consumer c2 = new Consumer(q);        new Thread(p1).start();        new Thread(p2).start();        new Thread(c1).start();        new Thread(c2).start();    }}

转载地址:http://fsyvb.baihongyu.com/

你可能感兴趣的文章
CMake学习笔记(1)——用CMake编译一个hello world程序
查看>>
cmake使用总结---工程主目录CMakeList文件编写
查看>>
CMake学习之路
查看>>
cmake学习笔记6-catkin的CmakeList.txt讲解
查看>>
cmake手册详解
查看>>
Maplab框架介绍(一)
查看>>
Maplab开源VI-SLAM框架介绍
查看>>
maplab(1):安装
查看>>
陀螺仪随机误差的Allan方差分析
查看>>
Ubuntu 64位安装Adobe Reader 9.5.5
查看>>
Ubuntu 下如何查看已安装的软件
查看>>
Linux 系统下可以注释标注的pdf阅读器安装、比较和推荐
查看>>
福昕阅读器foxit reader Linux版
查看>>
Ubuntu 安装百度云客户端
查看>>
每天一个linux命令:locate
查看>>
Linux 环境下载百度云资源,Firefox插件(百度网盘助手)
查看>>
ubuntu Firefox/chrome adobe flash 插件安装
查看>>
OpenCV图像变换(仿射变换与透视变换)
查看>>
仿射变换与透视变换
查看>>
Ubuntu 16.04 上安装 CUDA 9.0 详细教程
查看>>