Queue(队列)接口

Queue(队列)接口

表示Collection的子接口,表示队列FIFO(First In First Out)先进先出

常用方法:

​ 抛出异常:

​ boolean add(E e) - 顺序添加一个元素(到达上限后,再添加则会抛出异常 )

​ E remove() - 获得第一个元素并移除(如果队列没有元素时,则抛出异常)

​ E element() - 获得第一个元素但不移除(如果队列没有元素时,则抛出异常)

​ 返回特殊值:推荐使用

​ boolean offer(E e) - 顺序添加一个元素(到达上限后,再添加则会返回false)

​ E pool() - 获得第一个元素并移除(如果队列没有元素时,则返回null)

​ E peek() - 获得第一个元素但不移除(如果队列没有元素时,则返回null)

ConcurrentLinkedQueue

线程安全、可高效读写的队列,高并发下性能最好的队列。

无锁、CAS比较交换算法,修改的方法包含三个核心参数(V,E,N)

​ V:要更新的变量、 E:预期值、 N:新值

Queue<String> queue = new ConcurrentLinkedQueue<String>();
queue.offer("Hello");	//插入
queue.offer("World");	//插入
queue.poll();	//删除Hello
queue.peek();	//获得World

BlockingQueue接口(阻塞队列)

Queue的子接口,阻塞队列,增加了两个线程状态为无限期等待的方法。

方法:

void put(E e) - 将指定元素插入此队列中,如果没有可用空间,则等待

E take() - 获取并移除此队列头部元素,如果没有可用元素,则等待。

ArrayBlockingQueue:

数组结构实现,有界队列

没写完,抽空给补上

posted @ 2020-07-20 19:18  筋肉猩  阅读(534)  评论(0编辑  收藏  举报