一、Map
1. HashTable
线程安全的Map,用synchronized锁
2. Collections.synchronizedMap
Collections.synchronizedMap(new HashMap()) 可以把HashMap变成线程安全的,锁粒度比HashTable稍微小一点
3. ConcurrentHashMap
ConcurrentHashMap主要提高的是读的效率,数据量较多时,写效率没有HashTable高
无序:HashMap =》ConcurrentHashMap
有序(按大小排序):TreeMap =》ConcurrentSkipListMap
二、List
CopyOnWriteArrayList:写时复制,读的时候不加锁,写的时候加锁,复制原来的List,并添加新元素
CopyOnWriteSet
三、Queue:
多线程的情况下,多考虑Queue,少考虑List
1. 基本用法
offer方法是添加数据的,有一个boolean的返回值;
add方法也是添加数据的,没有返回值,添加不进去会抛异常
peek:取数据,并不会remove
poll:取数据,并remove队列中的,原子性是通过CAS实现的
2. BlockingQueue
put:添加数据,如果数据满了,会阻塞等待
take:取数据,如果数据为空了,会阻塞等待
LinkedBlockQueue:最大长度是int的最大值
3. DelayQueue
DelayQueue:按照delayTime排序,时间越短,越靠前
4. PriorityQueue
PriorityQueue:值按顺序排列
5. SynchronousQueue
SynchronousQueue:容量为0,需要有其他线程等待取值,才能put进去值,用于两个线程交换数据
6. LinkedTransferQueue
LinkedTransferQueue:transfer方法,等待其他线程往队列里面放值,等到该值被取走后继续运行

本文详细介绍了Java中多种并发集合类的特性和使用方法,包括线程安全的Map如HashTable、ConcurrentHashMap,特殊的List实现CopyOnWriteArrayList,以及各种Queue如BlockingQueue、DelayQueue等,并解释了它们之间的区别。
2万+

被折叠的 条评论
为什么被折叠?



