Obtener un mapa sincronizado de Java HashMap

HashMap es una clase de colección no sincronizada. Si queremos realizar operaciones seguras para subprocesos en él, debemos sincronizarlo explícitamente. Para sincronizarlo explícitamente, se utiliza el métodosynchroncedMap() de la clase java.util.Collections para devolver un mapa sincronizado (seguro para subprocesos) respaldado por el mapa especificado.

// Get synchronized map using Collections.synchronizedMap()

Map<Integer, String> synchrMap = Collections.synchronizedMap(hmap);

Para iterar el mapa sincronizado usamos un bloque sincronizado :

// Synchronized block
synchronized (synchrMap) {

      // Iterate synchronized map
      for (Map.Entry<Integer, String> entry : synchrMap.entrySet()) {

        // Print key : value
        System.out.println(entry.getKey() + " : " + entry.getValue());
        
      }
}

Implementación:

Java

// Java Program to demonstrate how 
// to get synchronized map from HashMap
  
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
  
        // New HashMap
        HashMap<Integer, String> hmap = new HashMap<>();
  
        // Add element to map
        hmap.put(1, "Akshay");
        hmap.put(2, "Bina");
        hmap.put(3, "Chintu");
  
        // Get synchronized map using
        // Collections.synchronizedMap()
        Map<Integer, String> synchrMap = Collections.synchronizedMap(hmap);
  
        System.out.println("Synchronized Map : ");
  
        // Synchronized block
        synchronized (synchrMap)
        {
  
            // Iterate synchronized map
            for (Map.Entry<Integer, String> entry :
                 synchrMap.entrySet()) {
  
                // Print key : value
                System.out.println(entry.getKey() + " : "
                                   + entry.getValue());
            }
        }
    }
}
Producción

Synchronized Map : 
1 : Akshay
2 : Bina
3 : Chintu

Publicación traducida automáticamente

Artículo escrito por nikhilchhipa9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *