我读到了一篇关于线程安全映射的文章,有一个问题。
那么,现在使用
Collections.synchronizedMap()
通过在每个方法上添加 synchronized
块来代理底层映射。另一方面,ConcurrentHashMap
在读/写操作时不锁定整个映射。这意味着多线程系统中的所有操作都更快。那么,现在使用
synchronizedMap()
的好处是什么?我只看到了以下几点:
- 它自Java 1.2以来就可用(而
ConcurrentHashMap
是从 Java 1.5 开始提供的) - 可以存储可空值(如果底层映射可以实现)
synchronizedMap()
更好呢?
synchronizedMap()
可以包装各种映射类型,如EnumMap
或LinkedHashMap
。 - shmosel