BlockingQueue接口方法说明

BolckingQueue接口

BlockingQueue 是juc下所有队列的接口,这些队列包括:

  • ArrayBolckingQueue
  • DelayedWorkQueue
  • DelayQueue
  • FariBlockQueue
  • LinkedBlockingQueue
  • PriorityBolckingQueue
  • SychronousQueue

先来熟悉一下相关的接口方法标准


  • boolean add(E e)
    从函数说明可以看出,这个方法是立即返回操作结果的,如果是在有界队列,队列满的时候,是直接抛出IllegalStateException异常的,所以建议在有界队列的时候,使用offer()

  • boolean offer(E e) 方法说明又强调了一次,如果是有界队列,这个比add方法好。。我知道了。。如果没有空间了,会一直阻塞,直到抛出异常

  • 还有另外一个offer方法
    boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;
    这个offer方法是可设置等待时间,并且是可中断的,成功入队返回true,超时失败false

  • put(E e) 队列满的时候一直等待直到中断异常

  • E take() 方法,返回检索获取到队列头的元素并且移除他,如果没有可获取的元素,还是一直傻等,直到抛出中断异常

  • E poll(long timeout, TimeUnit unit)方法,等待一个指定的时间段,如果在等待过程中中断了,抛出中断异常,如果等待时间还没有获取到,返回null

总结如下:

put(E e)和take()一个是入队一个出对,是会一直傻等直到抛出中断异常的
offer(E e, Long timeout, TimeUnit unit)和poll(long timeout, TimeUnit unit)是在一个时间段内等,不会一直傻等的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 阻塞队列 BlockingQueue BlockingQueue用法 BlockingQueue 通常用于一个线...
    MPPC阅读 1,867评论 0 3
  • Java-Review-Note——4.多线程 标签: JavaStudy PS:本来是分开三篇的,后来想想还是整...
    coder_pig阅读 1,705评论 2 17
  • 一、并发 进程:每个进程都拥有自己的一套变量 线程:线程之间共享数据 1.线程 Java中为多线程任务提供了很多的...
    SeanMa阅读 2,599评论 0 11
  • 第三章 Java内存模型 3.1 Java内存模型的基础 通信在共享内存的模型里,通过写-读内存中的公共状态进行隐...
    泽毛阅读 4,406评论 2 21