并发容器
1.概述
为了线程池做准备,线程池里有一个参数就是用并发容器来做你工作任务的容器。
容器分类
从物理结构来说,数据结构就两种
-
数组
-
链表
从逻辑结构来说,就很多了
为啥有了List,Set,后面还要加一个Queue?
List,Set就是用来普通装东西的,Queue主要是为高并发准备的
2.ConcurrentHashMap
发展:从HashTable到ConcurrentHashMap
jdk1.0: 就两个容器 Vector(collection) HashTable(map) 所有方法都加了sychronized,目前基本不用
后面加了:
- HashMap(所有方法都没加锁)---》
- 工具类Collections.synchronizedCollection(new HashSet<>()),底层还是 sychronized,只是用了sychronized锁一个对象,可以调节锁的粒度。
- ConcurrentHashMap(效率主要提高在并发读上面 效率很高 )
3.Vector到Queue的发展
多线程操作collection容器时 多考虑QUEUE少考虑List
ConcurrentLinkedDeque---》原子性是通过CAS实现
标签:容器,ConcurrentHashMap,List,Queue,并发,sychronized From: https://www.cnblogs.com/cutesheep/p/16731630.html