我用CopyOnWriteArrayList
的蛮多的。当
- 线程执行大量读取
- 线程执行一点写操作
但是,我会Collections.synchronizedList()
在何时使用
- 线程执行一点读取
- 线程执行大量写入
这是因为根据CopyOnWriteArrayList Java Doc
ArrayList 的线程安全变体,其中所有可变操作(添加、设置等)都是通过制作底层数组的新副本来实现的。
这通常太昂贵了,...
说到这里ConcurrentHashMap
,我想知道我是否仍然可以在选择ConcurrentHashMap
时应用相同的逻辑Collections.synchronizedMap()
?
ConcurrentHashMap
每次我执行写操作时都会制作底层数据结构的新副本吗?如果写操作多于读操作,它的性能会比 Collections.synchronizedMap 差吗?