BlockingQueue(LinkedBlockingQueue/ArrayBlockingQueue)核心方法比较说明

jdk1.5出现了阻塞队列;
接口类:BlockingQueue
本文只讲述接口核心方法的类型以及作用,具体的实现可以参考《LinkedBlockingQueue原理&源码解析》

核心方法:

方法类型抛出异常特殊值阻塞超时
插入add(e)offer(e)put(e)offer(e,time,unit)
移除remove(Object)poll()take()poll(time,unit)
检查element()peek()不可用不可用

说明:
抛出异常:当阻塞队列满时,再往队列里面add插入元素,会抛出IllegalStateException:Queqe full;
当阻塞队列空时,再从队列里remove移除元素,会抛出NoSuchElementException异常。如果指定了队列容量,那么不建议使用此类型的方法。
特殊值: 插入方法,成功true,失败false;如果指定了队列容量,那么建议使用此类型的方法。
移除方法,成功则返回队列头部元素,队列为空就失败返回null。
一直阻塞: 当阻塞队列满时,生产者线程再往里put元素,队列会一直阻塞生产线程,直到put数据或者响应中断退出;
当阻塞队列空时,消费者试图从队列里take元素,队列会一直阻塞消费者线程,直到队列有数据可用;
超时: 当阻塞队列满时,队列会阻塞生产者一定时间,超过限定时间后,返回false,生产者线程会退出。

实现类:
ArrayBlockingQueue:有数组组成的阻塞队列;
LinkedBlockingQueue:由链表组成有界(但是默认大小为:Interger.MAX_VALUE)阻塞队列;
SynchronousQueue:不存储元素的阻塞队列,也即单个元素的队列;
PriorityBlockingQueqe:只是优先级排序的无界阻塞队列;
DelayQueue:使用优先级队列实现的延迟无界阻塞队列;
重点前3个;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值