BlockingQueue

本文详细介绍了Java中的BlockingQueue,探讨了其四种操作方式,包括可能抛出异常、返回特殊值、阻塞等待和超时机制,以及它在多线程环境下的安全性和使用示例,如ArrayBlockingQueue的offer和remove方法的行为差异。
摘要由CSDN通过智能技术生成

BlockingQueue

介绍

BlockingQueu方法有四种形式,具有不同的操作方式,不能立即满足,但可能在将来的某个时间点满足:

  • 一个抛出异常,

  • 第二个返回一个特殊值( nullfalse ,具体取决于操作),

  • 第三个程序将无限期地阻止当前线程,直到操作成功为止

  • 第四个程序块在放弃之前只有给定的最大时限。

BolckingQueue在线程上是安全的

  • 所有排队方法使用内部锁或其他形式的并发控制在原子上实现其效果
  • 请注意, BlockingQueue可以安全地与多个生产者和多个消费者一起使用
BlockingQueue queue = new ArrayBlockingQueue(3);
方式抛出异常有返回值,不抛出异常阻塞等待超时等待
添加add()offer()put()offer()
删除remove()poll()take()poll()
查看队列首elementpeek--

这个图可以很好的理解上面的内容

在这里插入图片描述

  • remove这个方法
    • 如果传入参数,调用的是ArrayBlockingQueue的方法,那么返回的是boolean类型的,就算超界,也不会抛出异常,而是返回boolean类型
    • 如果不传入参数,那么就调用的是Queue接口中的方法,这个返回的是删除对象的数据,如果删除为空就会抛出异常
  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值