java中queue的使用

Queue接口与list/Set同一级别,都继承了Collection接口,LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限。

即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法了,而不能直接访问LinkedList的非Queue的方法,只有恰当的方法

才可以使用。BlockingQueue继承了Queue接口。

队列是一种数据接口,他有两个基本操作:在队列尾部加入一个元素,从队列头部移除一个元素就是说,队列一一种先进先出的方式管理数据,

如果你试图向一个已经满了的阻塞队列中添加一个元素或者从一个空的阻塞队列中移除一个元素,将导致线程阻塞,在多线程进行合作时,阻塞队列是

很有用的工具。工作者线程可以定期的把中间结果存到阻塞队列中而其他工作者线程把中间结果去除并在将来修改他们。队列会自动平衡负载,如果第

一个线程集运行的比第二个慢,则第二个线程集在等待结果时就会阻塞,如果第一个线程集运行的快,那么他讲等待第二个线程集赶上来,

add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常

remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常

element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常

offer       添加一个元素并返回true       如果队列已满,则返回false

poll         移除并返问队列头部的元素    如果队列为空,则返回null

peek       返回队列头部的元素             如果队列为空,则返回null

put         添加一个元素                      如果队列满,则阻塞

take        移除并返回队列头部的元素     如果队列为空,则阻塞

remove/element/offer/poll/peek其实是属于Queue接口。

阻塞队列的操作可以根据他们的相应方式分为以下三类:add/remove/element操作在你试图为一个已满的队列添加元素或从空队列去的元素时就会抛出异常。当然,在对多线程程序中,队列在任何时间都可能变成空的或满的,所以你可能想使用offer、poll、peek方法,这些方法无法完成任务时只是给出一个出错提示而不会抛出异常。

注意:poll和peek方法出错并返回null,因此,向队列中插入null值是不合法的。


http://www.cnblogs.com/end/archive/2012/10/25/2738493.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值