PriorityBlockingQueue
是一个无界阻塞队列,使用与PriorityQueue
相同的排序规则,提供了阻塞获取数据的操作。
主要属性
1 | "unchecked") ( |
入队
1 | public boolean offer(E e) { |
扩容
1 | private void tryGrow(Object[] array, int oldCap) { |
出队
1 | public E take() throws InterruptedException { |
总结
PriorityBlockingQueue
的出入队过程与PriorityQueue
基本保持一致PriorityBlockingQueue
使用一个锁和一个notEmpty条件控制并发安全PriorityBlockingQueue
扩容时使用CAS保证只有一个线程进行扩容操作