Java マルチプレーヤー ターンベース ゲームを作成しています。各プレーヤーが移動する時間を制限したいと考えています。ゲームはゲーム セッションまたは部屋で構成され、各部屋には 4 人のプレーヤーがいます。ゲームには約 40 のゲーム セッションがあり、各セッションには最低 160 ターンがあります。
最初に を調べた後、より優れていると思われるjava.util.Timer
を見つけました。各ゲーム セッションを作成し、ターンごとに新しいランナブルを作成し、ランナブルが実行される前にプレーヤーが移動した場合は、メソッドを呼び出すことができます。ScheduledExecutorService
SingleThreadScheduledExecutor
ScheduledFuture.cancel()
理論的には問題ないようですが、いくつか懸念があるので、次のことを知りたいです。
これは正しいアプローチですか?またはより良い代替手段がありますか?
ゲーム セッションごと
ScheduledThreadPool
に 1 つではなく、すべてのゲーム セッションに 1 つだけを使用できますか?SingleThreadScheduledExecutor
ScheduledFuture
キャンセルすると、実行時までメモリに保持されることに気付きましたが、これはメモリ使用量の問題でしょうか?最後に、ターンごとに新しいランナブルを作成する代わりに、同じランナブル (ゲーム セッションごとに 1 つ) を再利用することは可能ですか。