注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

LinkedBlockingQueue  

2011-11-07 13:07:23|  分类: JAVA集合容器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
LinkedBlockingQueue是一个基于已链接节点的、范围任意的blocking queue的实现
  此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。
  新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,
  但是在大多数并发应用程序中,其可预知的性能要低。
 可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。
 如果未指定容量,则它等于 
Integer.MAX_VALUE。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。
构造函数
Public Constructors
LinkedBlockingDeque()
Creates a LinkedBlockingDeque with a capacity of MAX_VALUE.
LinkedBlockingDeque(int capacity)
Creates a LinkedBlockingDeque with the given (fixed) capacity.
LinkedBlockingDeque(Collection<? extends E> c)
Creates a LinkedBlockingDeque with a capacity of MAX_VALUE, initially containing the elements of the given collection, added in traversal order of the collection's iterator.
 注意1:容量范围可以在构造方法参数中指定作为防止队列过度扩展。如果未指定容量,则它等于 Integer.MAX_VALUE
 注意2:它是线程安全的,是线程阻塞的。
 注意3:不接受 null 元素
 注意4:它实现了BlockingQueue接口。关于BlockingQueue,请参考《BlockingQueue

 注意5:它没有线程ArrayBlockingQueue那样的公平性设置。为什么这样设计呢?puzzle.
 注意6:此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选 方法。
 注意7:在JDK5/6中,LinkedBlockingQueue和ArrayBlocingQueue等对象的poll(long timeout, TimeUnit unit)存在内存泄露
   Leak的对象是AbstractQueuedSynchronizer.Node,
   据称JDK5会在Update12里Fix,JDK6会在Update2里Fix。
   更加详细参考http://sesame.javaeye.com/blog/428026和 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=2143840 

关于LinkedBlockingQueue的使用请参考《ArrayBlockingQueue》和《BlockingQueue
  评论这张
 
阅读(1913)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017