Java 队列

395 阅读1分钟

队列是一种先进先出的数据结构

非阻塞队列

PriorityQueue优先级队列:线程不安全、基于数组存储构成优先级堆 添加元素为空抛出异常 每次操作,对元素进行排序,取优先级最高的元素放在队首,保证获取的元素按优先级从高到低 siftUpUsingComparator与siftDownUsingComparator !!!!!
add、offer 添加元素 peek(获取元素不删除)、poll(获取元素并删除)

ConcurrentLinkedQueue:基于链表存储、线程安全

阻塞队列

在获取元素(take)时,若为空,阻塞当前线程(Lock condition的await),当添加值进去后释放(signal)

ArrayBlockingQueue :一个由数组支持的有界队列。 LinkedBlockingQueue :一个由链接节点支持的可选有界队列。 PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列。 DelayQueue :一个由优先级堆支持的、基于时间的调度队列。

双向队列

可以向头跟尾放入与取出元素

ArrayDeque双向队列 基于数据 线程不安全\ LinkedList基于链表

前两者属于单向队列,队尾添加元素,队头取出元素