PriorityBlockingQueue的介绍及方法内部实现

62 阅读1分钟

SynchronousQueue的介绍

SynchronousQueue是一个优先级队列,不满足先进先出FIFO的概念。 会将插入的数据进行排序,输出排序之后的结果(小根堆,由小变大升序) 在这里插入图片描述

内部实现原理介绍

  • SynchronousQueue是基于二叉堆结构实现的。
  • SynchronousQueue同时还是基于数组实现的二叉堆结构。 在这里插入图片描述

二叉堆概念介绍

  • 百度百科的介绍

二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 在这里插入图片描述

PriorityBlockingQueue核心属性的分析

在这里插入图片描述

PriorityBlockingQueue的生产操作

  • add方法还是封装了offer方法。所以对offer方法进行分析 在这里插入图片描述
  • offer中的扩容操作分析 在这里插入图片描述 在这里插入图片描述

offer添加数据如何保证二叉堆(小根堆结构)

  • siftUpComparable(n, e, array);方法分析 在这里插入图片描述

PriorityBlockingQueue的消费者操作

  • poll方法分析 在这里插入图片描述
  • poll带时间参数的方法分析 在这里插入图片描述
  • take方法分析 在这里插入图片描述

dequeue获取数据分析

在这里插入图片描述

siftDownComparable保证二叉树(小根堆方法分析)

在这里插入图片描述