`
dq03041221
  • 浏览: 16384 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

LinkedBlockingQueue

 
阅读更多
LinkedBlockingQueue是一个基于已链接节点的、范围任意的blocking queue的实现。
    此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。
    新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,
    但是在大多数并发应用程序中,其可预知的性能要低。
    可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。
    如果未指定容量,则它等于 Integer.MAX_VALUE。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。

    注意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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics