03-运用非阻塞线程安全的双端队列
7.2 运用非阻塞线程安全的双端队列
“列表”是最基本的集合。它包含不确定数量的数组元素,允许开发者添加、读取或者删除任何一个位置的数组元素。并发列表允许多线程同时添加、删除数组元素而不会产生任何数据不一致的错误。类似地,我们有双端队列。一个双端队列近似于一个队列,但在双端队列里面,开发者可以向头部和尾部添加或删除数组元素。
本节将介绍如何在并发程序中使用非阻塞双端队列。非阻塞队列提供了一些操作,如果操作没有立刻完成(例如,开发者想从空的数组中获取一个数组元素),则它会抛出一个异常或者返回一个 null
值,这依赖于操作本身。Java 7用 ConcurrentLinkedDeque
类来实现一个非阻塞并发双端队列。
我们将通过下面两个任务来实现一个案例:
- 添加几千个数组元素到双端队列;
- 删除双端队列中的数据。