引自:http://ifeve.com/concurrent-collections-1/

并发集合(一)引言

声明:本文是《 Java 7 Concurrency Cookbook》的第六章,作者: Javier Fernández González     译者:许巧辉 校对:方腾飞

在本章中,我们将包含:

引言

在编程中,数据结构是一种基本的元素。几乎每个程序都使用一个或多个数据结构类型来存储和管理它们的数据。Java API提供了Java集合框架(Java Collections framework),它包括可以用来实现许多不同的数据结构的接口、类和算法,你可以在程序中使用它们。

当你需要在并发程序中使用数据集合时,你必须十分小心的选择实现。大多数集合数并不适合用在并发应用程序中,因为它们没有控制并发访问数据。如果一些并发任务共享一个数据结构,而这个数据结构并不适合用在并发任务中,你将会有数据不一致的错误,这将影响到程序的正确运行。ArrayList类就是这种数据结构的一个例子。

Java提供了你可以在你的并发程序中使用的,而且不会有任何问题或不一致的数据集合。基本上,Java提供两种在并发应用程序中使用的集合:

  • 阻塞集合:这种集合包括添加和删除数据的操作。如果操作不能立即进行,是因为集合已满或者为空,该程序将被阻塞,直到操作可以进行。
  • 非阻塞集合:这种集合也包括添加和删除数据的操作。如果操作不能立即进行,这个操作将返回null值或抛出异常,但该线程将不会阻塞。

通过本章的指南,你将学习如何使用一些可以用在并发应用程序中的Java集合。这包括:

  • 非阻塞列表,使用ConcurrentLinkedDeque类。
  • 阻塞列表,使用LinkedBlockingDeque类。
  • 用在生产者与消费者数据的阻塞列表,使用LinkedTransferQueue类。
  • 使用优先级排序元素的阻塞列表,使用PriorityBlockingQueue类。
  • 存储延迟元素的阻塞列表,使用DelayQueue类。
  • 非阻塞可导航的map,使用ConcurrentSkipListMap类。
  • 随机数,使用ThreadLocalRandom类
  • 原子变量,使用AtomicLong和AtomicIntegerArray类

最新文章

  1. python常见数据类型
  2. 原生js获取样式
  3. python string.py 源码分析 三:maketrans
  4. paas架构之docker——镜像管理
  5. linux下C/C++IDE比较——Code::Blocks
  6. CSS属性之absolute
  7. scrapy代理的设置
  8. python2.7源码编译安装
  9. Batch update returned unexpected row count from update [0] 异常处理
  10. JS引擎的执行机制:探究EventLoop(含Macro Task和Micro Task)
  11. Javascript重点汇总
  12. 【fiddler】抓取https数据失败,全部显示“Tunnel to......443”
  13. querySelectorAll()方法
  14. Python 项目实践三(Web应用程序) 第三篇
  15. Gym - 100342J Triatrip (bitset求三元环个数)
  16. 给ubuntu系统的root设置密码:
  17. C语言读取配置文件
  18. 013-- mysql常用的查询优化方法
  19. TCP/IP协议族-----24、网络管理(SNMP)
  20. 【json提取器】- 提取数据的方法

热门文章

  1. 【小记录】关于dojo中的on事件
  2. ES入门——数组的扩展
  3. SSIS ->> Environment Variables
  4. Java接口与多态
  5. linux(centos、ubuntu)网卡配置文件不生效
  6. Python学习---模版/包的概念
  7. 在vs2015中使用附加进程的方式调试IIS中的页面
  8. Java字符串工具类
  9. python3.6安装总结
  10. 如何给SAP C4C的产品主数据division配置出新的下拉选项