1 概述
2 类图
3 详细说明
3.1 Queue
Queue接口继承于Collection接口,用于存储将要被使用的数据。也就是说Queue是一个队列,采用FIFO的方式,针对Queue接口,除了拥有Collection的方法之外,还拥有处理队列数据的独有方法。这些方法在处理失败情况的时候表现为两种行为,一种是直接抛出异常,一种返回false或者返回空。下面针对方法详细说明。
| 操作失败的处理 | 抛出异常 | 返回false或者null |
| 添加 | add | offer |
| 返回并移除(尾部的元素) | remove | poll |
| 返回不移除(尾部的元素) | element | peek |
这里我们需要注意的是Queue不建议插入null,因为在某些操作失败的情况下也会返回null。
3.2 BlockingQueue
BlockingQueue继承自Queue,处理包含Queue的功能之外,还支持阻塞等待。当获取数据的时候,如果队列中没有数据,将等待直到有数据或者超时。当存入数据的时候,如果没有空闲位置用于存放数据,将等待直到由空闲位置或者超时。下面我们具体来看这几种方式的方法。
| 抛出异常 | 返回特殊值 | 阻塞 | 超时等待 | |
| 添加 | add | offer | put | offer(Object,long,TimeUnit) |
| 返回并移除(尾部的元素) | remove | poll | take | poll(long, TimeUnit) |
| 返回不移除(尾部的元素) | element | peek |
3.3 AbstractQueue