首页 > 编程语言 > 详细

线程安全的队列

时间:2019-10-25 15:58:22      阅读:78      评论:0      收藏:0      [点我收藏+]

Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue

BlockingQueue是一个接口, 继承Queue接口,Queue接口继承 Collection

BlockingQueue的方法

 

技术分享图片

 

 其中add 和remove方法会抛出异常,一般使用后面两组方法

BlockingQueue的实现类

    ArrayBlockingQueue

    DelayQueue

    LinkedBlockingQueue

    PriorityBlockingQueue

    SynchronousQueue

ArrayBlockingQueue:由数组实现的有界阻塞队列,其中元素以FIFO(先入先出)顺序排序,其构造函数必须带一个int参数来指明其大小,可选参数fair(布尔)决定在多线程抢占时是否使用公平锁

LinkedBlockingQueue:由链表实现的阻塞队列,其中元素以FIFO(先入先出)顺序排序,若其构造函数带一个规定大小的参数,生成的BlockingQueue有大小限制,若不带大小参数,所生成的BlockingQueue的大小由Integer.MAX_VALUE来决定

PriorityBlockingQueue:无界的阻塞队列,其所含对象的排序不是FIFO而是依据对象的自然排序顺序或者是构造函数的Comparator决定的顺序

SynchronousQueue:特殊的BlockingQueue,对其的操作必须是放和取交替完成的

 

线程安全的队列

原文:https://www.cnblogs.com/moris5013/p/11738375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!