在一些Android开源代码中,我发现

 private Map<ImageView, String> imageViews=Collections.synchronizedMap(new
 WeakHashMap<ImageView, String>());

谁能解释我普通Mapcollections.synchronizedmap之间的区别

最佳答案

java.util包中的常规Map实现不是线程安全的。这意味着,如果多个线程在同一个Map上执行get()put()操作,则可能导致竞态条件或Map中的数据不一致。

要在多线程环境中使用现有的Map,可以通过调用Collections.synchronizedMap()获得相同实例的同步实例。在这种情况下,大多数方法(例如get()putkeyset())都是同步的,可以安全地并发使用。

有关更多信息,请参阅
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedMap(java.util.Map)

09-11 18:54