从ConcurrentHashMap <k,v>仅返回值作为对象的函数是否需要同步?

时间:2019-02-15 15:25:56

标签: java multithreading synchronization

我有一个下课:

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 :(得分:1)

不,您不需要。使它synchronized导致只有一个线程可以同时执行该方法,这没有意义。

但是您可能需要删除方法GetGameDataById的静态修饰符,因为Map是非静态的。