Я бы посоветовал вам не синхронизировать методы и не блокировать саму карту.Я обычно предпочитаю использовать отдельный объект блокировки, который только используется для блокировки и только известный в классе, который владеет картой.
Вы можете потенциально используйте synchronizedMap
, но это зависит от того, что вы хотите с ним сделать.Если вы только когда-нибудь получите и поставите значения, тогда это нормально.Если вам когда-либо понадобится перебрать по карте, вам нужно заблокировать другие потоки от изменения карты во время перебора.
Другой вариант - использовать ConcurrentHashMap
.Смотрите документы для семантики.Это, вероятно, самый простой подход, если он ведет себя так, как вам нужно.