public class QueueKits extends Object
copy from vipshop VJTools(com.vip.vjtools.vjkit.collection.QueueUtil) and made some changes.
| 构造器和说明 |
|---|
QueueKits() |
| 限定符和类型 | 方法和说明 |
|---|---|
static <E> Queue<E> |
createConcurrentStack()
支持后进先出的无阻塞的并发栈,用ConcurrentLinkedDeque实现,经过Collections#asLifoQueue()转换顺序
另对于BlockingQueue接口, JDK暂无Lifo倒转实现,因此只能直接使用未调转顺序的LinkedBlockingDeque
|
static <E> com.google.common.collect.EvictingQueue<E> |
createLRUQueue(int maxSize)
LRUQueue, 如果Queue已满,则删除最旧的元素.
|
static <E> Queue<E> |
createStack(int initSize)
支持后进先出的栈,用ArrayDeque实现, 经过Collections#asLifoQueue()转换顺序
需设置初始长度,默认为16,数组满时成倍扩容
|
static <E> ArrayBlockingQueue<E> |
newArrayBlockingQueue(int capacity)
创建并发阻塞情况下,长度受限,更节约内存,但共用一把锁的队列(无双端队列实现).
|
static <E> ArrayDeque<E> |
newArrayDeque(int initSize)
创建ArrayDeque (JDK无ArrayQueue)
需设置初始长度,默认为16,数组满时成倍扩容
|
static <E> LinkedBlockingDeque<E> |
newBlockingDeque(int capacity)
创建并发阻塞情况下,长度受限,头队尾两把锁, 但使用更多内存的双端队列.
|
static <E> LinkedBlockingDeque<E> |
newBlockingUnlimitDeque()
创建并发阻塞情况下,长度不受限的双端队列.
|
static <E> LinkedBlockingQueue<E> |
newBlockingUnlimitQueue()
创建并发阻塞情况下,长度不受限的队列.
|
static <E> Deque<E> |
newConcurrentNonBlockingDeque()
创建无阻塞情况下,性能最优的并发双端队列
|
static <E> ConcurrentLinkedQueue<E> |
newConcurrentNonBlockingQueue()
创建无阻塞情况下,性能最优的并发队列
|
static <E> LinkedBlockingQueue<E> |
newLinkedBlockingQueue(int capacity)
创建并发阻塞情况下,长度受限,头队尾两把锁, 但使用更多内存的队列.
|
static <E> LinkedList<E> |
newLinkedDeque()
创建LinkedDeque (LinkedList实现了Deque接口)
|
public static <E> ArrayDeque<E> newArrayDeque(int initSize)
需设置初始长度,默认为16,数组满时成倍扩容
public static <E> LinkedList<E> newLinkedDeque()
public static <E> ConcurrentLinkedQueue<E> newConcurrentNonBlockingQueue()
public static <E> Deque<E> newConcurrentNonBlockingDeque()
public static <E> LinkedBlockingQueue<E> newBlockingUnlimitQueue()
长度不受限,即生产者不会因为满而阻塞,但消费者会因为空而阻塞.
public static <E> LinkedBlockingDeque<E> newBlockingUnlimitDeque()
长度不受限,即生产者不会因为满而阻塞,但消费者会因为空而阻塞.
public static <E> ArrayBlockingQueue<E> newArrayBlockingQueue(int capacity)
public static <E> LinkedBlockingQueue<E> newLinkedBlockingQueue(int capacity)
public static <E> LinkedBlockingDeque<E> newBlockingDeque(int capacity)
public static <E> Queue<E> createStack(int initSize)
需设置初始长度,默认为16,数组满时成倍扩容
public static <E> Queue<E> createConcurrentStack()
另对于BlockingQueue接口, JDK暂无Lifo倒转实现,因此只能直接使用未调转顺序的LinkedBlockingDeque
public static <E> com.google.common.collect.EvictingQueue<E> createLRUQueue(int maxSize)
内部实现是ArrayDeque
Copyright © 2019. All rights reserved.