English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Nummer | Schlüssel | Concurrent Hash-Mapping | Synchronisierte 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 |
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); } }
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); } }