Normal Map和collections.synchronizedmap之间的区别

use*_*034 5 java collections

在我发现的一些android开源代码中

 private Map<ImageView, String> imageViews=Collections.synchronizedMap(new
 WeakHashMap<ImageView, String>());
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我Map和普通的区别collections.synchronizedmap

小智 2

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

要在多线程环境中使用现有的 Map,您可以通过调用 来获取该 Map 的同步实例Collections.synchronizedMap()。在这种情况下,大多数方法(如 、和 )都是同步的get(),并且可以安全地并发使用。 有关这方面的更多信息,请参阅 http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedMap(java.util.Map )putkeyset()