Java常见的队列

zhangliangddq / 2023-08-23 / 原文

队列分类

  1. 阻塞队列
    阻塞队列要实现接口:BlockingQueue
  2. 非阻塞队列

LinkedBlockingQueue常用方法

  1. LinkedBlockingQueue是是一个阻塞的线程安全的队列,底层采用链表实现。遵循FIFO(先进先出)。

  2. LinkedBlockingQueue添加元素的方法有三个:add、offer、put。且都是向队列尾部添加元素。
    add:方法在添加元素的时候,若超出了度列的长度会直接抛出异常。 java.lang.IllegalStateException: Queue full
    offer:方法添加元素,如果队列已满,直接返回false。
    put:方法添加元素,如果队列已满,会阻塞直到有空间可以放。

  3. LinkedBlockingQueue移除元素的方法有三个:remove、poll、take。且都是从队列中取出头部元素并从队列中删除。
    remove: 移除需要指定对象,循环队列进行匹配对 对象进行删除,删除成功返回true 否则返回false。
    poll: 每次返回队列的第一个,若队列为空,返回null。
    take:若队列为空,发生阻塞,等待到有元素。

  4. LinkedBlockingQueue可以在构造函数的参数中指定大小,若没有指定大小,则默认大小为Integer.MAX_VALUE。>
    LinkedBlockingQueue的大小不可为null。