HashTable синхронізується, тобто є потоково безпечним. Кілька потоків можуть отримувати доступ і змінювати HashTable одночасно, не спричиняючи пошкодження даних. З іншого боку, HashMap не синхронізується за замовчуванням, що означає, що він небезпечний для потоків.30 серпня 2023 р
Це проблема, якщо кілька потоків додають до одного екземпляра HashMap без його синхронізації . Навіть якщо лише один потік змінює HashMap, а інші потоки читають цю саму карту без синхронізації, ви зіткнетеся з проблемами.
Проблема з небезпечними картами Уявіть, що у вас є кілька людей, які намагаються читати та писати на одній карті одночасно без будь-яких правил. Настане хаос! У наведеному нижче фрагменті коду ми маємо 100 людей (або goroutines), які намагаються записати різні числа на ту саму карту за допомогою ключа «key».
по-перше, Hashtable є потокобезпечним і може використовуватися між кількома потоками програми. З іншого боку, HashMap не синхронізується, і до нього не можуть отримати доступ кілька потоків без додаткового коду синхронізації. Ми можемо використовувати колекції.
hashmap жодним чином не використовує hashtable. hashmap не синхронізовано тому що це ніколи не було призначено, це проста реалізація підтримки сегмента хеш-коду та зв’язаного списку, призначеного цьому хеш-коду з парою ключ-значення як вузлами.
HashMap взагалі не є потокобезпечним. Таким чином, він несинхронізований за своєю природою.