如何在Java中同步 HashMap?
哈希表 是集合的Java框架的一部分。它以键值对的形式存储数据。 HashMap 的这些值可以通过使用它们各自的键来访问。可以使用它们的索引(整数类型)访问键值对。
HashMap 类似于Java中的 HashTable。 HashTable 和 HashMap 的主要区别在于 HashTable 是同步的,而 HashMap 不是同步的。此外,一个 HashMap 可以有一个空键和任意数量的空值。 HashMap 中不保留插入顺序。
同步意味着控制多个线程对任何共享资源的访问。同步资源一次只能被一个线程访问。
HashMap 可以使用Collections.synchronizedMap()方法进行同步。
Java.util.Collections类的synchronizedMap()方法用于返回由指定映射支持的同步(线程安全)映射。为了保证串行访问,对支持映射的所有访问都通过返回的映射完成是至关重要的。
句法:
public static
参数:此方法将地图作为要“包装”在同步地图中的参数。
返回值:此方法返回指定地图的同步视图。
代码:
Java
// Java program to demonstrate
// synchronization of HashMap
import java.util.*;
public class GFG {
public static void main(String[] argv) throws Exception
{
try {
// create a HashMap object
Map hMap
= new HashMap();
// add elements into the Map
hMap.put("1", "Welcome");
hMap.put("2", "To");
hMap.put("3", "Geeks");
hMap.put("4", "For");
hMap.put("5", "Geeks");
System.out.println("Map : " + hMap);
// Synchronizing the map
Map sMap
= Collections.synchronizedMap(hMap);
// printing the Collection
System.out.println("Synchronized map is : "
+ sMap);
}
catch (IllegalArgumentException e)
{
System.out.println("Exception thrown : " + e);
}
}
}
输出
Map : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}
Synchronized map is : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}