如何在java中创建变量global

时间:2012-11-12 12:33:37

标签: java client-server global-variables multiplayer static-variables

在多人在线游戏中。如何保持变量全局?我们正在开发一个在线游戏,我们需要一个全局变量。将有一个服务器和多个客户端。我们可以保持一个公共变量,它是所有客户端同步的静态和可编辑的。我们能有一些建议吗?

3 个答案:

答案 0 :(得分:4)

如果您移动到群集,拥有基于堆的变量将成为一个问题,因为它不够全局(每个节点将有一个单独的副本)。

如果这不是问题,并且如果通过“变量”表示像String或Long这样的简单事物,那么最好的选择是使用java.util.concurrent.Atomic*类。例如,

public static final AtomicLong id = new AtomicLong();

这一点最重要的优点是它可以使用比较和交换以及get-and-set进行原子更新,例如id.getAndIncrement();

答案 1 :(得分:0)

服务器必须控制变量。

当客户想要修改该变量时,他们不会更改它,他们必须向服务器发送一条消息,告诉新的所需值。服务器存储它并向所有客户端广播消息,然后它们都用新值更新该变量。

当然,如果服务器自行修改,它只会广播新值。

答案 2 :(得分:0)

- public static final用于在Java中创建变量Global。

- 但是必须使用volatile,以便操作直接发生在内存中并直接从内存中读取。

- 最好使用java.util.concurrent.Atomic中的类。

- 您可以使用AtomicIntegerAtomicLongAtomicReference等等。