English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Unterschied zwischen Concurrent Hash Map und Synchronisierter Hash Map in Java

Der concurrente Hashmap ist in JDK1.5Einführt. Concurrent Hash-Mapping applies Locks nur auf der Ebene der Speicherböden, die als Segmente bezeichnet werden, wenn die Abbildung hinzugefügt oder aktualisiert wird. Daher ermöglicht das Concurrent Hash-Mapping concurrente Lese- und Schreibvorgänge auf die Abbildung. 

Synchronisierte HashMap (Collection.syncronizedHashMap()) ist eine Methode des Collection-Frameworks. Diese Methode applies einen Lock auf den gesamten Kollektor. Daher kann kein anderer Thread gleichzeitig auf denselben Abbildung zugreifen, wenn ein Thread den Abbildung zugreift. 

NummerSchlüsselConcurrent Hash-MappingSynchronisierte Hash-Mapping
1
Realisierung
Es ist eine Klasse, die das Interface ConcurrentHashMap und Serializable implementiert. 
Es ist eine Methode in der Collection-Klasse.  
2
Sperrroutine
Teilweise sperren
Den gesamten Abbildungsspeicher sperren. 
3
Leistung
Gesynchrone Hash-Mappings erlauben concurrente Lese- und Schreibvorgänge. Daher ist die Leistung besser als bei den gesynchrone Abbildungen. 
Mehrere Threads können die Abbildung gleichzeitig nicht zugreifen. Daher ist die Leistung relativ geringer als bei den gesynchrone Hash-Mappings.
4
Leere Schlüssel
null kann nicht als Schlüssel oder Wert verwendet werden. 
Es ist erlaubt, null als Schlüssel zu verwenden.
5 
ConcurrencyModificationException
Er löst keine ConcurrencyModificationException aus. 
Der Iterator, der von der gesynchrone Abbildung zurückgegeben wird, löst eine ConcurrencyModificationException aus

Beispiel der SynchronizedMap

public class SynchronizedMapExample {
   public static void main(String[] args) {
      Map<Integer,String> laptopmap = new HashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      //Erstellen Sie eine gesynchrone Abbildung
      Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap);
      System.out.println("Synchronized map is: "+syncmap);
   }
}

ConcurrentHashMap---Beispiel

public class ConcurrentHashMap---Beispiel {
   public static void main(String[] args) {
      //ConcurrentHashMap---
      Map<Integer,String> laptopmap = new ConcurrentHashMap---<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      System.out.println("ConcurrentHashMap--- ist: "+laptopmap);
   }
}