我有一个下课:
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()
函数本身。
答案 0 :(得分:1)
不,您不需要。使它synchronized
导致只有一个线程可以同时执行该方法,这没有意义。
但是您可能需要删除方法GetGameDataById
的静态修饰符,因为Map
是非静态的。