【发布时间】:2011-01-16 09:22:33
【问题描述】:
是否可以不使用Collections.synchronizedMap() 重写以下代码,同时保持并发的正确性?
Collections.synchronizedMap(new WeakHashMap<Class, Object>());
即java.util.concurrent 有什么可以代替的吗?请注意,仅替换为
new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));
显然不行
【问题讨论】:
-
ConcurrentHashMap等高并发数据结构的重要好处是它可以(通过各种技术)在重负载下保持线程安全,而不会(大量)阻塞。重要的是要意识到,如果您的类没有承受重负载,那么使用 ConcurrentHashMap 的性能可能会更差而不是使用 HashMap。如果您的环境预计在很大程度上没有争用,您可以使用外部同步,那么您就可以了。
标签: java collections guava java.util.concurrent weakhashmap