我正在使用每客户端线程模型开发游戏。游戏的运行方式是每半秒所有玩家都需要更新。更新都必须在半秒的时间间隔内发生,因此它们都需要同时执行。我的想法是有一个类来跟踪“全局更新”何时需要发生,然后当时间到来时,遍历所有玩家并告诉它更新:
for(Player p : currentPlayers) {
p.update();
}
问题是,由于每个玩家都有自己的线程,我希望玩家能够利用这一事实,因为它已经存在。如果我从不同的类进行更新,那么会有一个线程执行几百个线程可以单独执行的操作。我该如何设计它,以便如果一个线程在 Player 类中调用方法“update()”,一个与调用它的线程不同的线程执行它,或者可能是一种可以实现相同目标的不同方法?
如果您需要任何澄清,请询问!非常感谢!
更新:你们怎么看这个(我不知道如何在帖子中格式化大量代码!):
更新2:刚刚意识到我需要知道所有玩家何时完成更新以重置最后一次......
公共类 PseudoExample 实现 Runnable { // 假设“玩家”中充满了活跃玩家。 私人玩家 [] 玩家 = 新玩家 [100]; 私有的 long lastUpdate = System.currentTimeMillis(); 公共无效运行() { 而(真) { if (System.currentTimeMillis() - lastUpdate >= 500) { 对于(玩家 p:玩家) { p.update = true; } } 尝试 { 线程.sleep(10); } 捕捉(InterruptedException e) { } } } 私有类 Player 实现 Runnable { 私人布尔更新=假; 公共无效运行() { 而(真) { 如果(更新) { // 在这里更新... } 尝试 { 线程.sleep(10); } 捕捉(InterruptedException e) { } } } } }