码迷,mamicode.com
首页 > 其他好文 > 详细

Queue(队列)接口

时间:2020-07-20 22:36:41      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:增加   方法   指定元素   实现   无锁   线程状态   交换   阻塞队列   blocking   

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:

数组结构实现,有界队列

没写完,抽空给补上

Queue(队列)接口

标签:增加   方法   指定元素   实现   无锁   线程状态   交换   阻塞队列   blocking   

原文地址:https://www.cnblogs.com/MonkeySun/p/13347193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!