我的班级如下:
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
是非静态的。