1. Collection
2. Map
Map容器: HashMap,TreeMap 线程不安全
HashTable,ConcurrentHashMap,ConcurrentSkipListMap 线程安全
HashTable: synchronized 锁
ConcurrentHashMap,ConcurrentSkipListMap:CAS 自旋锁
Collection容器: List,Set,Queue
List:
线程不安全:
ArrayList
LinkedList
线程安全:
Vector : sychronized 锁
Collections.synchronizedList synchronized 锁
CopyOnWriteArrayList ReentrantLock CAS自旋锁, 适用于读多写少的情况,写时加锁,读时不加锁
Set:
线程不安全:
HashSet,TreeSet,LinkedHashSet
线程安全:
Collections.synchronizedSet synchronized 锁
CopyOnWriteArraySet ReentrantLock CAS自旋锁, 适用于读多写少的情况,写时加锁,读时不加锁
concurrentSkipListSet
Queue:
线程安全:
ConcurrentQueue:
ConcurrentLinkedQueue: 最大Integer.MAX_VALUE offer,poll,peek
ConcurrentArrayQueue: 有界 offer,poll,peek
阻塞队列
BlockingQueue:
ArrayBlockingQueue: 有界 offer,poll,peek, put: 阻塞 take: 阻塞
LinkedBlockingQueue: 最大Integer.MAX_VALUE offer,poll,peek, put: 阻塞 take: 阻塞
延时队列
DelayQueue:
用来装任务的, 任务需要实现Delayed 接口,重写compareTo 方法和 getDelay方法,
按着从小到大排序后的时间进行执行
SynchronusQueue,TransferQueue:
SynchronusQueue: 只能put一个元素, 调用put 方法时,是阻塞的,直到有线程 take的时候,才解除阻塞状态
TransferQueue: 可以put多个元素, 每一个put都是阻塞的,直到有线程 take 该元素的时候,才解除阻塞状态