background image

removeelementoffer pollpeek 其实是属于 Queue 接口。

阻塞队列的操作可以根据它们的响应方式分为以下三类:aadremovee 和 element 

 

作在你试图为一个已满的队列增加元素或从空队列取得元素时 抛出异常。当然,

在 多 线 程 程 序 中 , 队 列 在 任 何 时 间 都 可 能 变 成 满 的 或 空 的 , 所 以 你 可 能 想 使 用

offerpollpeek

 

方法。这些方法在无法完成任务时 只是给出一个出错示而不会抛出

异常。

注意:poll 和 peek 方法出错进返回 null。因此,向队列中插入 null 值是不合法的。

还有带超时的 offer 和 poll 方法变种,例如,下面的调用:

boolean success = q.offer(x,100,TimeUnit.MILLISECONDS);

尝试在 100 毫秒内向队列尾部插入一个元素。如果成功,立即返回 true;否则,当

到达超时进,返回 false。同样地,调用:

Object head = q.poll(100, TimeUnit.MILLISECONDS);

如果在 100 毫秒内成功地移除了队列头元素,则立即返回头元素;否则在到达超时

时,返回 null

最后,我们有阻塞操作 put 和 takeput 方法在队列满时阻塞,take 方法在队列空时

阻塞。

java

.ulil.concurrent 包 提 供 了 阻 塞 队 列 的 个 变 种 。 默 认 情 况 下

LinkedBlockingQueue 的 容 量 是 没 有 上 限 的 ( 说 的 不 准 确 , 在 不 指 定 时 容 量 为

Integer.MAX_VALUE,不要然的话在 put 时怎么会受阻呢),但是也可以选择指定

 

其最大容量,它是基于链表的队列,此队列按 FIFO(先进先出)排序元素。

ArrayBlockingQueue

 

 

在 构造时需要指定容量, 并可以选择是否需要公平性,如果

公 平 参 数 被 设 置 true, 等 待 时 间 最 长 的 线 程 会 优 先 得 到 处 理 ( 其 实 就 是 通 过 将