开发者社区> 问答> 正文

描述线程池工作队列PriorityBlockingQueue

描述线程池工作队列PriorityBlockingQueue

展开
收起
huc_逆天 2021-01-08 15:33:28 886 0
1 条回答
写回答
取消 提交回答
  • 什么是PriorityBlockingQueue? PriorityBlockingQueue队列是 JDK1.5 的时候出来的一个阻塞队列。但是该队列入队的时候是不会阻塞的,永远会加到队尾。下面我们介绍下它的几个特点: ①PriorityBlockingQueue 和 ArrayBlockingQueue 一样是基于数组实现的,但后者在初始化时需要指定长度,前者默认长度是 11。 ②该队列可以说是真正的无界队列,它在队列满的时候会进行扩容,而前面说的无界阻塞队列其实都有有界,只是界限太大可以忽略(最大值是 2147483647) ③该队列属于权重队列,可以理解为它可以进行排序,但是排序不是从小到大排或从大到小排,是基于数组的堆结构(具体如何排下面会进行分析) ④出队方式和前面的也不同,是根据权重来进行出队,和前面所说队列中那种先进先出或者先进后出方式不同。 ⑤其存入的元素必须实现Comparator,或者在创建队列的时候自定义Comparator

    注意:

    ①堆结构实际上是一种完全二叉树,建议学习前了解一下二叉树。 ②堆又分为大顶堆和小顶堆。大顶堆中第一个元素肯定是所有元素中最大的,小顶堆中第一个元素是所有元素中最小的。

    2021-02-03 18:22:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载