Java Collections.synchronizedList/synchronizedMap的真正价值是什么?

Java Collections.synchronizedList/synchronizedMap的真正价值是什么?,java,multithreading,Java,Multithreading,我看不到使用Collections.synchronizedList/synchronizedMap的任何实际价值,而且根据文档,我们需要在迭代期间同步列表/映射,这对性能不好 我可以只使用ConcurrentMap/CopyOnWriteArrayList类。基本上,我想问的是,在什么情况下,我们只需要使用Collections.synchronizedList/synchronizedMap,而不需要使用java.util.concurrent包中的类 我看不到使用Collections.s

我看不到使用Collections.synchronizedList/synchronizedMap的任何实际价值,而且根据文档,我们需要在迭代期间同步列表/映射,这对性能不好

我可以只使用ConcurrentMap/CopyOnWriteArrayList类。基本上,我想问的是,在什么情况下,我们只需要使用Collections.synchronizedList/synchronizedMap,而不需要使用java.util.concurrent包中的类

我看不到使用Collections.synchronizedList/synchronizedMap的任何实际价值,而且根据文档,我们需要在迭代期间同步列表/映射,这对性能不好

不管性能如何,对集合进行迭代都不是一个好主意。如果您关心性能的话,您应该构建您的结构,这样就不需要对它们进行迭代

我可以只使用ConcurrentMap/CopyOnWriteArrayList类。基本上,我想问的是,在什么情况下,我们只需要使用Collections.synchronizedList/synchronizedMap,而不需要使用java.util.concurrent包中的类

并发集合通常更易于使用。您应该注意,小型ConcurrentHashMap将比同步HashMap大很多倍,因此,除非只有少数几个,否则HashMap仍然可能是最佳选择


CopyOnWriteArrayList读取速度非常快,但更新成本非常高。(它在添加或删除时复制整个数组,可能不止一次)

在大多数情况下,几乎都会对集合进行迭代。但是在什么情况下我应该只使用synchronizeList/Map而不是并发集合呢?当你说ConcurrentHashMap比同步HashMap大吗?你是什么意思?更大,我的意思是它需要更多的内存。如果您必须担心内存使用,您可以使用HashMap。如果您有很多写操作,则使用同步列表会更好。@Adelave如果您经常对集合(如同步映射)进行迭代,则表明您的代码有问题,或者您不担心性能问题。