Можем ли мы использовать hashmap в многопоточной среде?

Оглавление:

Можем ли мы использовать hashmap в многопоточной среде?
Можем ли мы использовать hashmap в многопоточной среде?
Anonim

Что не так с использованием HashMap в многопоточной среде? … Это проблема, если несколько потоков добавляют к одному и тому же экземпляру HashMap без его синхронизации. Даже если только один поток модифицирует HashMap, а другие потоки читают эту же карту без синхронизации, вы столкнетесь с проблемами.

Можно ли использовать HashMap в многопоточной среде?

Вы должны убедиться, что все обновления HashMap завершены до создания экземпляров потоков, и поток, который создает карту, также разветвляет потоки. Потоки используют только HashMap в режиме только для чтения - либо получить, либо выполнить итерацию без удаления. Нет тем, обновляющих карту.

Почему HashMap не следует использовать в многопоточной среде, может ли это привести к бесконечному циклу?

Емкость HashMap по умолчанию равна 16, а коэффициент загрузки равен 0,75, что означает, что HashMap удвоит свою емкость, когда на карте появится 12-я пара ключ-значение (160,75=12). Когда 2 потока одновременно пытаются получить доступ к HashMap, вы можете столкнуться с бесконечным циклом. Поток 1 и поток 2 пытаются поместить 12-ю пару ключ-значение.

Является ли HashMap потокобезопасным?

HashMap не синхронизирован. Он не является потокобезопасным и не может использоваться несколькими потоками без надлежащего кода синхронизации, тогда как Hashtable синхронизируется.

Что лучше всего подходит для многопоточныхсреда?

Ответ: "ConcurrentHashMap"

Рекомендуемые: