ConcurrentLinkedQueue
无界非阻塞队列,底层用单链表实现,出队和入队用cas实现。
LinkedBlockingQueue
底层用单链表实现,有界,独占锁实现出队和入队,有两个锁,takeLock和putLock
takeLock:控制同时只能有一个线程可以从队头获取元素,其他线程等待
putLock:控制同时只能有一个线程可以从队尾添加元素,其他线程等待
ArrayBlockingQueue
底层数组实现,通过锁实现出队和入队,有界(可以指定,默认Integer.Max_VALUE)
PriorityBlockingQueue
带有优先级的无界队列,底层通过二叉树堆实现,
DelayQueue
通过 PriorityBlockingQueue
来装数据,只有过期的数据才会出队。