English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La ConcurrentHashMap è una classe introdotta in JDK1.5. La ConcurrentHashMap applica un blocco di sicurezza solo al livello dei contenitori chiamati segmenti durante l'aggiunta o l'aggiornamento della mappatura. Pertanto, la ConcurrentHashMap permette operazioni di lettura e scrittura concorrenti sulla mappatura.
La synchronizedHashMap (Collection.syncronizedHashMap()) è un metodo del framework Collection. Questo metodo applica un blocco di sicurezza all'intera raccolta. Pertanto, se un thread sta accedendo a questa mappatura, nessun altro thread può accedere alla stessa mappatura.
Numero | Chiave | Mappa hash concorrente | Mappa hash sincronizzata |
---|---|---|---|
1 | Implementazione | È una classe che implements l'interfaccia di mappa hash concorrente e serializzabile. | È un metodo della classe Collection. |
2 | Struttura di blocco | Blocca una parte | Blocca l'intera mappa. |
3 | Prestazioni | La mappa hash concorrente permette letture e scrittura concorrenti. Pertanto, le prestazioni sono migliori rispetto alla mappa sincronizzata. | Non è possibile che più thread accedano contemporaneamente alla mappa. Pertanto, le prestazioni sono relativamente inferiori rispetto alla mappa hash concorrente. |
4 | Chiave vuota | Non si può usare null come chiave o valore. | Permette null come chiave. |
5 | Eccezione di modifica concorrente | Non induce l'eccezione di modifica concorrente. | L'iteratore restituito dalla mappa sincronizzata induce l'eccezione di modifica concorrente |
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"); //Creare una mappa sincronizzata Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap); System.out.println("Mappa sincronizzata è: " + syncmap); } }
public class ConcurrentHashMap---Example { 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--- è: " + laptopmap); } }