首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >juc03 数组阻塞队列—ArrayBlockingQueue

juc03 数组阻塞队列—ArrayBlockingQueue

作者头像
小诸葛
发布2020-04-14 15:59:38
2980
发布2020-04-14 15:59:38
举报
文章被收录于专栏:方法论方法论方法论

ArrayBlockingQueue实现了BlockingQueue接口。关于BlockingQueue的内容可以参考:juc02 阻塞队列—BlockingQueue

ArrayBlockingQueue是有界的阻塞队列,内部使用数组存储元素,有界意味着它不能存储无限数量的元素,它存储的元素数量是有上限的,你可以在初始化的时候设置容量,之后这个容量就不能再改变了。

ArrayBlockingQueue内部按先进先出(FIFO)的顺序存储元素,头部元素是在队列中存储时间最长的,尾部元素是在队列中存储时间最短的。

下面展示了如何初始化和使用ArrayBlockingQueue:

BlockingQueue queue = new ArrayBlockingQueue(1024);

queue.put("1");

Object object = queue.take();

下面是一个使用了java泛型的BlockingQueue案例:

BlockingQueue<String> queue = new ArrayBlockingQueue<String>(1024);

queue.put("1");

String string = queue.take();

下面是一个使用ArrayBlockingQueue实现的一个生产者消费者案例:

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class TestArrayBlockingQueue {

    public static void main(String[] args) throws InterruptedException {

        BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<>(3);

        Thread producer = new Thread(() -> {
            for (int i = 0; i < 3; i++) {
                try {
                    Thread.sleep(1000);
                    System.out.println("生产者生产i:" + i);
                    blockingQueue.add("i:" + i);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        Thread consumer = new Thread(() -> {
            for (int i = 0; i < 3; i++){
                try {
                    System.out.println("消费者消费" + blockingQueue.take());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        producer.start();
        consumer.start();

    }
}

运行截图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小诸葛的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档