English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Конкурентоспособный hashmap был введен в JDK 1.5. Конкурентоспособный хэш-маппинг применяет lock только на уровне хранилища, называемого фрагментом, при добавлении или обновлении карты. Таким образом, конкурентоспособный хэш-маппинг позволяет выполнять конкурентные чтение и запись в карту.
Синхронизированный hashmap (Collection.syncronizedHashMap()) - это метод в фреймворке Collection. Этот метод applies lock to the entire collection. Таким образом, если один поток доступ к этой карте, то другой поток не может получить доступ к этой карте.
Номер | Ключ | Параллельный хэш-маппинг | Синхронизированный хэш-маппинг |
---|---|---|---|
1 | Реализация | Это класс, реализующий интерфейсы параллельного хэш-маппинга и сериализации. | Это метод класса Collection. |
2 | Механизм блокировки | Заключение части | Заключение всего маппинга. |
3 | Производительность | КонCURRENT.HashMap позволяет параллельное чтение и запись. Таким образом, производительность выше, чем у синхронизированного маппинга. | Множественные потоки не могут одновременно обращаться к маппингу. Таким образом, производительность относительно ниже, чем у конCURRENT.HashMap. |
4 | Пустой ключ | Запрещается использовать null в качестве ключа или значения. | Он позволяет null в качестве ключа. |
5 | Исключение изменения во время выполнения | Он не вызывает исключение изменения во время выполнения. | Итератор синхронизированного маппинга вызывает исключение изменения во время выполнения |
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"); //Создание синхронизированного маппинга Map<Integer, String> syncmap = Collections.synchronizedMap(laptopmap); System.out.println("Синхронизированная карта: " + 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--- is: " + laptopmap); } }