2

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

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

4

1 回答 1

3

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

无论如何,迭代集合对于性能来说并不是一个好主意。如果你关心性能,你应该构建你的结构,这样它们就不需要被迭代。

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

并发集合通常更易于使用。你应该注意到一个小的 ConcurrentHashMap 会比同步的 HashMap 大很多倍,所以除非你只有几个,否则 HashMap 仍然可能是最好的选择。

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

于 2013-07-21T10:14:16.967 回答