【发布时间】:2019-10-13 12:23:55
【问题描述】:
我试图了解synchronizedCollection、synchronizedList、synchronizedMap、synchronizedSet 和其他此类方法的作用。据我了解,同步可以在块和方法上完成,而不是在类上,所以假设我有一个哈希图。
HashMap<Integer,String> hashMap = new HashMap<Integer,String>();
HashMap<Integer,String> syncHashMap = Collections.synchronizedMap(hashMap);
问题
上面的代码也同步了整个
syncHashMap类或 里面的每一个方法?如果我们可以简单地使用线程安全集合,例如
ConcurrentHashMap或SynchronizedMap在多线程场景中那么需要什么Collections.synchronizedMap(hashMap)和其他类似的方法在 集合类
非常感谢这方面的一些指导,在此先感谢。
【问题讨论】:
-
我认为您对同步有点困惑。您不同步代码。代码在对象上同步。在这种情况下,所有标准 Map 方法都会在
synchronizedMap()返回的对象上同步。 -
您应该从了解对象、类和变量之间的区别开始。
syncHashMap是一个变量,包含对对象的引用。
标签: java multithreading collections synchronized