Функция возвращает только значение как объект из ConcurrentHashMapнужно синхронизировать? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть класс ниже:

Class GameDataHandler {
    private final ConcurrentHashMap<Long, GameData> m_lstUpcomingGameData = new ConcurrentHashMap<>();

    public GameDataHandler () {
       s_instance = this;
    }


    public static IGameData GetGameDataById(long a_gameId) {
        return s_instance.m_lstUpcomingGameData.get(a_gameId);
    }    
}

В моем случае функция GetGameDataById() вызывается несколькими потоками.Нужно ли указывать synchronized в моем методе?

Я знаю, что ConcurrentHashMap является поточно-ориентированным, но я не уверен насчет самой функции GetGameDataById().

1 Ответ

0 голосов
/ 15 февраля 2019

Нет, тебе это не нужно.Сделать это synchronized приводит к тому, что только один поток может выполнять метод одновременно, что не имеет смысла.

Но вам может потребоваться удалить статический модификатор метода GetGameDataById, поскольку Mapнестатическая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...