Java常见的队列
队列分类
- 阻塞队列
阻塞队列要实现接口:BlockingQueue - 非阻塞队列
LinkedBlockingQueue常用方法
-
LinkedBlockingQueue是是一个阻塞的线程安全的队列,底层采用链表实现。遵循FIFO(先进先出)。
-
LinkedBlockingQueue添加元素的方法有三个:add、offer、put。且都是向队列尾部添加元素。
add:方法在添加元素的时候,若超出了度列的长度会直接抛出异常。 java.lang.IllegalStateException: Queue full
offer:方法添加元素,如果队列已满,直接返回false。
put:方法添加元素,如果队列已满,会阻塞直到有空间可以放。 -
LinkedBlockingQueue移除元素的方法有三个:remove、poll、take。且都是从队列中取出头部元素并从队列中删除。
remove: 移除需要指定对象,循环队列进行匹配对 对象进行删除,删除成功返回true 否则返回false。
poll: 每次返回队列的第一个,若队列为空,返回null。
take:若队列为空,发生阻塞,等待到有元素。 -
LinkedBlockingQueue可以在构造函数的参数中指定大小,若没有指定大小,则默认大小为Integer.MAX_VALUE。>
LinkedBlockingQueue的大小不可为null。