setGameState()并且getGameState()可以从不同的线程调用.m_gameState是不稳定的,所以它的值/变化可能对其他线程可见.
问题:
函数是否需要synchronized变量或变量是否足够?
private volatile EGameState m_gameState;
public void setGameState(EGameState a_gameState) {
m_gameState = a_gameState;
}
public EGameState getGameState() {
return m_gameState;
}
Run Code Online (Sandbox Code Playgroud)
小智 2
对 volatile 变量的访问就像它本身是同步的一样。
访问 volatile 变量永远不会持有锁,它不适合我们想要将读-更新-写作为原子操作的情况。这里需要使用同步块。
对于其他情况,如果您不使用同步(如正常的获取和设置)就足够了
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |