Java:游戏的并发性

Nic*_*ner 1 java concurrency notify

为了好玩,我正在编写香蕉图的模拟。我想使用并发,但我不完全确定如何使用。

我在一个Game类中有一个主要方法。每个播放器线程都致力于解决方案。在某些时候,玩家会“剥皮”。在此操作期间,每个玩家都会得到一张新牌。播放器线程之一必须通知Game线程。

伪代码如下所示:

while (no player has reported they are finished) {
      if (player reports it is time to peel) {
           everyone peel 
      }
      everyone work towards completion of puzzle
}
Run Code Online (Sandbox Code Playgroud)

我如何在 Java 中实现它?(我不一定要寻找完全充实的解决方案,只是指出我正确的方向。)我想如何处理对象之间的通知?

澄清一下这不是用户互动游戏。我只是想尝试不同的算法,看看哪种算法可以最快地解决问题。如果有的话,“游戏”将编写一个算法并将其插入以查看它是如何工作的。

Cha*_*ere 5

这将是使用Cyclic Barrier的好地方。

本质上,循环屏障让线程做一些工作,然后让所有线程等待,直到它们都到达同一点,然后每个线程再次启动。

所以,你可以让每个玩家剥皮,然后调用 CyclicBarrier.await()。然后所有线程将等待,直到每个线程都达到该点。这似乎是你想要的。

(此外,您显然并不真正需要并发:)