Вот проблемный метод:
public GenericsBean getByName(String name) {
return container.get(name);
}
Валидатор не пропускает решение, т.к. предлагает засинхронизировать указанный метод.
Не понимаю, зачем?
Допустим, несколько нитей одновременно получают значение по переданному ключу. Ну и пусть получают! Они же никакого изменения в мапу не вносят! Зачем здесь синхронизация?
Вот, например, синхронизация removeByName(String name) понятна, т.к. в указанном методе происходит изменение состояния поля.
Подскажите, пожалуйста, где я не прав???
Matus
23 уровень
Почему решение не правильное?
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Егор ГераськинExpert
4 февраля 2020, 15:52
Желательно конечно полный код выкладывать. Но если требует синхронизировать - надо не париться и синхронизировать. В этом тоже может быть смысл
0
Matus
5 февраля 2020, 09:52
Привет!
Оно то конечно так, но учитывая что синхронизация - это тяжелая работа для JVM, лишний раз синхронизироваться не желательно (это мое мнение, подчеркнутое из прочитанной информации).
Здесь для меня не понятен следующий вопрос: зачем синхронизировать методы, которые не меняют состояния поля?
0