1

私は単純なタワーディフェンスゲームを持っています。すべてのモンスターは独自のスレッドで移動するため、新しい波が来ると、約 20 の新しいスレッドが作成されます (10 から 25 までランダムに)。生存期間の短いスレッドが多い状況で役立つエグゼキュータ クラスのようなものを覚えています。私が持っているように。だから私の質問は:

  1. スレッド プールを使用する必要がありますか? また、パフォーマンスはどの程度向上しますか?
  2. どのように実装すればよいですか?プールはフィールドにする必要がありますか?
4

2 に答える 2

3

モンスターごとに move() メソッドを用意し、定期的に呼び出します。このようにして、スレッドが 1 つだけになり、正常に動作するはずです。ところで、その 1 つのスレッドは、必要に応じて ExecutorService を使用できます。

于 2013-01-29T21:37:51.740 に答える
1

波の間隔は1秒以上だと思っても大丈夫だと思いますね。そうでなければ、あなたのゲームは打ち負かすのがかなり難しいでしょう。;-)

生成するスレッドが非常に少ない場合(15〜25スレッドは大したことではありません)、スレッドプールを使用しても違いが生じるとは思いません。個人的には、を使用しますnew Thread。いつでもExecutorService後で切り替えることができますが、シナリオでは必要ないと思います。

たとえば、数百の着信要求を処理する必要があるWebサーバーを作成している場合、スレッドプールは妥当です(各要求は別々のスレッドで処理される必要があると想定しています)。その場合、スレッドプールはパフォーマンスを向上させる可能性がありますが、その最も重要な利点は、リソースの使用を制限するための便利な方法であるということです。

なんで?リクエストごとに新しいスレッドを生成するだけの場合、同時に多くのリクエストがあると、すぐにリソースが不足するリスクがあります。スレッドの上限があるスレッドプールを使用すると、それが発生するのを防ぐことができます。

(ただし、アプリケーションの詳細を知らなくても、純粋な設計の観点から、スレッドを完全に回避し、すべてのゲームロジックを1つのスレッドに保持することは、間違いなく検討する必要があります。これにより、作業がはるかに簡単になります。しかし、繰り返しになりますが、詳細があります。)

于 2013-01-29T23:43:24.783 に答える