Что не так с использованием 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"