HashTable,Vector
(1)Blocking
Blocking大部分实现基于锁,并提供阻塞的方法
(2)CopyOnWrite
修改开销较重
(3)Concurrent
i)内部使用cas,有较高的吞吐量
ii)弱一致性
迭代器遍历时,如果容器发生修改,迭代器仍然可以继续遍历,只是遍历的数据是旧值。求size操作未必100%准确
案例:
ConcurrentHashMap
Map<String, LongAdder> map=new ConcurrentHashMap<>(); //在多线程中判断map中key是否存在,如果不存在,则将key放入mao中,并产生一个累加器 LongAdder longAdder = map.computeIfAbsent(key, (key) -> new LongAdder()); longAdder.increment();
