我的班级如下:

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()函数本身。

最佳答案

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

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

09-25 20:18