JUC源码分析-PriorityBlockingQueue
概述 PriorityBlockingQueue:二叉堆结构优先级阻塞队列,FIFO,通过显式的lock锁保证线程安全,是一个线程安全的BlockingQueue,加入队列的数据实例按照指定优先级升序排列,这个规则通过赋值 实现了Comparator的字段或数据实例类实现Comparable接口自定义,都定义的情况下 字段比较器优先。它一个老牌的队列,在JDK1.5已经加入,如果队列加入的数据实例需要排序,这是个不错的选择。 核心属性和数据结构 private static final int DEFAULT_INITIAL_CAPACITY = 11;//默认数组容量 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;//数组最大容量 private transient Object[] queue;//存储数据的数组 private transient int size;//节点数 统计用 private transient Comparator<? super E> comparator;//比较器,可自定义传入 private final ReentrantLock lock;//重入锁,依赖它实现线程安全 private final Condition notEmpty;//lock创建的