此文中介绍的十种JAVA队列分别为:
ArrayBlockingQueue ConcurrentLinkedQueue DelayQueue LinkedBlockingQueue LinkedTransferQueue PriorityQueue PriorityBlockingQueue SynchronousQueue ConcurrentLinkedDeque LinkedBlockingDeque
无界与有界:无界指队列的元素数量是没有限制的,可以无限添加。而有界指队列中的容量有限制,当元素数达到一定数目之后就无法添加了。
阻塞与非阻塞:非阻塞队列如果队列已满的添加与队列为空时的获取会直接返回结果,可以说非阻塞队列是只能实时的。阻塞队列则意味着其在队列已满的添加与队列为空时的获取是可以选择直接获取结果或者是进入等待到达一定条件在获取结果的。 重点就在于这个可不可以等待。
单端与双端:单端队列只允许新元素加到队列末尾,然后从队列头取出。双端队列则在队列的头尾都可进行存取操作。
十种队列的具体区别详见下图: