码迷,mamicode.com
首页 > 编程语言 > 详细

Java中Queue的使用

时间:2015-09-30 12:37:18      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。

  队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:

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

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

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

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

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

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

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

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

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

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

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

Java中Queue的使用

标签:

原文地址:http://www.cnblogs.com/little-YTMM/p/4848601.html

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