以下代码片段是否可以被重写,而不使用Collections.synchronizedMap()
方法,同时在并发时保持正确性?
Collections.synchronizedMap(new WeakHashMap<Class, Object>());
即,是否有java.util.concurrent中的某些东西可以使用?请注意,仅仅用 </p>
进行替换是不够的。new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));
显然不会起作用
ConcurrentHashMap
)的重要好处是,它可以通过各种技术在重负载下保持线程安全,而不会(太多)阻塞。需要注意的是,如果您的类没有承受重负载,那么使用ConcurrentHashMap的性能可能比使用HashMap还要差。如果您的环境预计很少有争用,那么您可以使用外部同步,这样就可以正常运行。 - scottb