📜  如何在Java中同步 HashMap?

📅  最后修改于: 2022-05-13 01:55:00.764000             🧑  作者: Mango

如何在Java中同步 HashMap?

哈希表 是集合的Java框架的一部分。它以键值对的形式存储数据。 HashMap 的这些值可以通过使用它们各自的键来访问。可以使用它们的索引(整数类型)访问键值对。

HashMap 类似于Java中的 HashTable。 HashTable 和 HashMap 的主要区别在于 HashTable 是同步的,而 HashMap 不是同步的。此外,一个 HashMap 可以有一个空键和任意数量的空值。 HashMap 中不保留插入顺序。

同步意味着控制多个线程对任何共享资源的访问。同步资源一次只能被一个线程访问。

HashMap 可以使用Collections.synchronizedMap()方法进行同步。

Java.util.CollectionssynchronizedMap()方法用于返回由指定映射支持的同步(线程安全)映射。为了保证串行访问,对支持映射的所有访问都通过返回的映射完成是至关重要的。

句法:

参数:此方法将地图作为要“包装”在同步地图中的参数。

返回值:此方法返回指定地图的同步视图

代码:

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}