如何在 Java 中同步 HashMap?

原文:https://www . geesforgeks . org/how-synchronize-hashmap-in-Java/

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

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

同步是指控制多个线程对任意共享资源的访问。一次只能有一个线程访问同步的资源。

可以使用collections . synchronized map()方法同步 HashMap。

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

语法:

公共静态< K,V >地图< K,V >同步地图(地图< K,V > m)

参数:该方法将地图作为参数“包裹”在同步地图中。

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

代码:

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<String, String> hMap
                = new HashMap<String, String>();

            // 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<String, String> sMap
                = Collections.synchronizedMap(hMap);

            // printing the Collection
            System.out.println("Synchronized map is : "
                               + sMap);
        }

        catch (IllegalArgumentException e) 
        {
            System.out.println("Exception thrown : " + e);
        }
    }
}

Output

Map : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}
Synchronized map is : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}