Если из разных потоков в HashMap
добавляются (только добавляются и не более того) записи, то необходимо ли при этом синхронизировать вызов метода put
?
На сколько я понимаю, синхронизация могла бы потребоваться, если в один момент времени из разных потоков происходит как запись, так и чтение, и удаление, и прочее подобное, но если же речь идёт лишь о добавлении, то в синхронизации нет необходимости (какая уж разница как записи будут добавлены, меп просто будет в любом случае заполнена), или же есть какие-либо подводные камни?
Не совсем так, проблема может возникнуть при добавлении в тот момент, когда будет вычисляться адрес памяти, куда поместить элемент, чтобы связать его с текущей структурой HashMap, таким образом при добавлении 2х элементов одновременно, один из них может затеряться.
Также проблема может возникнуть когда один поток читает адрес, а другой удаляет, может возникнуть ситуация, что будет вычислен адрес для чтения объекта, но в это же время он будет удалён из Map, а следовательно данные станут не валидными.
Если вам нужна многопоточная HashMap, то имеется специальная реализация ConcurrentHashMap
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При запускеjar файла возникает следующая ошибка:
Всем приветРешил сделать простенькое приложение для "изучения" английского
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском