07-运用阻塞线程安全的双端队列
7.3 运用阻塞线程安全的双端队列
列表是最简单的集合框架。一个普通列表可以拥有无限个元素,你可以在列表中的任意一个位置对元素进行增删改查。一个并发的列表允许多线程在同一时刻对元素进行增删改查,而且不会产生任何数据不一致的问题。双端队列与列表相似,它的数据结构与普通队列一样,但它却可以在队头或队尾进行元素的增删操作。
在本节中,你将会学到如何在并发程序中使用阻塞线程安全的双端队列。对于阻塞线程安全的双端队列与非阻塞线程安全的双端队列,两者最大的区别就是阻塞双端队列在增删元素的时候,如果队列是满的或者是空的,则会阻塞该线程直到条件满足以后才继续往下执行。Java语言中的 LinkedBlockingDeque
类实现了一个阻塞的双端队列。
根据如下两个任务来实现一个例子:
- 添加1000个元素到双端队列;
- 对同一个双端队列进行大规模元素删除的操作。