• 技术文章 >java >java基础

    BlockingQueue在java中的使用

    小妮浅浅小妮浅浅2021-01-11 13:46:31原创2595

    我们已经对线程池中的队列有所了解,那么其中还有一种阻塞队列的类型。可以获取和添加一些元素,当队列已经满了时,就会发挥它的阻塞作用,等队列空了再让新元素进入。下面我们就BlockingQueue的概念、使用场景、子类及它的实现分别带来介绍,看看都有哪些内容吧。

    1.概念

    是一个先进先出的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue 支持当获取队列元素但是队列为空时,会阻塞等待队列中有元素再返回;也支持添加元素时,如果队列已满,那么等到队列可以放入新元素时再放入。

    2.使用场景

    (1抛出异常;

    (2)返回特殊值(null 或 true/false,取决于具体的操作);

    (3)阻塞等待此操作,直到这个操作成功;

    (4)阻塞等待此操作,直到成功或者超时指定时间。

    3.实现的子类

    ArrayBlockingQueue 数组型阻塞队列

    LinkedBlockingQueue 链表型阻塞队列

    DelayQueue 延时队列

    SynchronousQueue 同步队列

    PriorityBlockingQueue 优先阻塞队列

    4.BlockingQueue实现

    假设创建了一个阻塞队列(BlockingQueue)bq

    生产者:循环调用bq.put(value)添加数据

    消费者:循环调用bq.take()读取数据。

    以上就是BlockingQueue在java中的使用,相信大家已经初步掌握阻塞队列的使用概念。在接下来的内容中,我们会进一步分析其子类的用法,可以持续关注一下。

    专题推荐:java blockingqueue
    上一篇:java线程池的工作队列有哪几个 下一篇:java中ArrayBlockingQueue的使用

    相关文章推荐

    • java中关闭ExecutorService• ThreadPoolExecutor在java中创建线程池• java线程池的运行流程• java线程池创建方式• java线程池异常的处理方法• java线程池的工作队列有哪几个

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网