在一些Android开源代码中,我发现
private Map<ImageView, String> imageViews=Collections.synchronizedMap(new
WeakHashMap<ImageView, String>());
谁能解释我普通
Map
和collections.synchronizedmap
之间的区别 最佳答案
java.util包中的常规Map实现不是线程安全的。这意味着,如果多个线程在同一个Map上执行get()
或put()
操作,则可能导致竞态条件或Map中的数据不一致。
要在多线程环境中使用现有的Map,可以通过调用Collections.synchronizedMap()
获得相同实例的同步实例。在这种情况下,大多数方法(例如get()
,put
和keyset()
)都是同步的,可以安全地并发使用。
有关更多信息,请参阅
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedMap(java.util.Map)