今日学习内容总结如下:
Java针对队列提供的实现
Queue队列就是一个先入先出FIFO的数据结构
队列是一种特殊的线性表,遵循先入先出、后入后出的基本原则,一般来说,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,但是java的某些队列运行在任何地方插入删除;比如常用的LinkedList集合,它实现了Queue接口,因此可以理解为LinkedList就是一个队列
接口定义
public interface Queue<E> extends Collection<E> {
boolean add(E e); //在队尾添加数据
boolean offer(E e); //在LinkedList中就是使用add提供的实现
E remove(); //删除队列头部的数据,同时返回删除的数据
E poll();
E element(); //获取队列头部的数据,并不会执行删除操作
E peek();
}
队列主要分为阻塞和非阻塞,有界和无界、单向链表和双向链表之分;
1、阻塞和非阻塞
阻塞队列
入列(添加元素)时,如果元素数量超过队列总数,会进行等待(阻塞),待队列的中的元素出列后,元素数量未超过队列总数时,就会解除阻塞状态,进而可以继续入列;
出列(删除元素)时,如果队列为空的情况下,也会进行等待(阻塞),待队列有值的时候即会解除阻塞状态,进而继续出列