Java并发——并发集合

正在学习这一章,对看过的资料进行了总结。

来源:http://ifeve.com/concurrent-collections-1/

           https://www.cnblogs.com/esther-qing/p/6492299.html

1. Java的集合框架

集合类主要负责保存数据,因此集合类也被称为容器类。Java容器类的用途是”保存对象”,并将其划分为两个不同的概念:

(1)Collection 
     一组”对立”的元素,通常这些元素都服从某种规则 
   1) List必须保持元素特定的顺序 
   2) Set不能有重复元素 
   3) Queue保持一个队列(先进先出)的顺序
(2)Map 
     一组成对的”键值对”对象

2. 并发集合

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

为了处理多线程并发安全问题,Java5在java.util.concurrent包下提供了支持多线程并发的集合类。

常用的并发集合类

扫描二维码关注公众号,回复: 4616685 查看本文章
  • 阻塞集合:这种集合包括添加和删除数据的操作。如果操作不能立即进行,是因为集合已满或者为空,该程序将被阻塞,直到操作可以进行。
  • 非阻塞集合:这种集合也包括添加和删除数据的操作。如果操作不能立即进行,这个操作将返回null值或抛出异常,但该线程将不会阻塞。 
  • ConcurrentHashMap:线程安全的HashMap的实现
  • CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayList
  • CopyOnWriteArraySet:基于CopyOnWriteArrayList,不添加重复元素
  • ArrayBlockingQueue:基于数组、先进先出、线程安全,可实现指定时间的阻塞读写,并且容量可以限制
  • LinkedBlockingQueue:基于链表实现,读写各用一把锁,在高并发读写操作都多的情况下,性能优于ArrayBlockingQueue

3. 具体的使用 

(1)BlockingQueue

以下博文介绍的非常详细:

https://www.cnblogs.com/esther-qing/p/6492299.html

 BlockingQueue家庭成员:

 

(2)ConcurrentHashMap 

https://www.cnblogs.com/dolphin0520/p/3932905.html 

猜你喜欢

转载自blog.csdn.net/zhm1563550235/article/details/84635634