前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 并发模型

java 并发模型

作者头像
平凡的学生族
发布2019-05-25 09:13:01
4330
发布2019-05-25 09:13:01
举报
文章被收录于专栏:后端技术后端技术

BlockingQueue

1. 类层次图

从图中可以得知几个信息:

  1. BlockingQueue是个接口,它是本质上是一个Queue。
  2. 主要有3个实现类。

2. 主要方法

根据阅读注释和跟踪父类Queue源码,我们得知,BlockingQueue的方法主要分三类:

  1. 放置元素到尾部。。
    1. add(Object): 继承自Queue
    2. offer(Object): 继承自Queue
    3. put(Object): 声明于BlockingQueue
    4. offer(Object, long, TimeUnit): 声明于BlockingQueue
  2. 取出头部元素。移除头部元素,且把头部设为返回值。
    1. remove(): 继承自Queue
    2. poll(): 继承自Queue
    3. take(): 声明于BlockingQueue
    4. poll(long, TimeUnit): 声明于BlockingQueue
  3. 查看头部元素。查看而不移除头部。
    1. element(): 继承自Queue
    2. peek(): 继承自Queue

为什么一个操作能对应2到4种方法名呢?这是因为不管放置、取出还是查看,都对应四种行为模式:

  1. Throws exception。操作失败时抛出异常。
  2. Special value。操作失败时返回nullfalse
  3. Blocks。阻塞进程直到操作成功
  4. Times out。在放弃操作前等待至多一个最大时间限制。

上文提到的放置取出的四种方法,按顺序刚好对应这四种行为模式。 至于查看的两种方法,element()在队列为空时抛出异常,peek()则会返回null

各种阻塞队列的实现

详情见BlockingQueue深入解析-BlockingQueue看这一篇就够了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BlockingQueue
  • 1. 类层次图
  • 2. 主要方法
  • 各种阻塞队列的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档