1

ゲームループを実行するスレッドがあります。新しいゲームを開始するたびに、このゲーム ループを実行できるようにしたいと考えています。しかし、Java のスレッドは 1 回しか開始できないため、どうすればよいのでしょうか?

4

4 に答える 4

3

Thread同じRunnableインスタンスの周りに新しいものを作成し、それを開始します。

于 2012-08-13T02:08:08.987 に答える
2

1.あなたがそう言うとき"you need to run a thread"、私はあなたが別のスレッドでサブタスクを開始したいということです.

2.この特定のサブタスクを意味する場合は、実行することをお勧めします new thread

3. おっしゃる通りBut since the threads in Java can only be started once

これは、 athread (thread of execution) がそのメソッドを完了する run()と、それに関連付けられた Thread オブジェクトがそのスレッド性を永久に失うことを意味します....

ただし、このスレッドがプールからのものである場合、プール自体が Thread オブジェクトとその再利用された . パッケージExecutorsから使ってみてください。java.util.concurrent

于 2012-08-13T02:46:43.307 に答える
2

ゲーム ループを実行するスレッドを実行し続ける必要があるため、次のようにコーディングする必要があります。

  public class GameLoop implements Runnable {
      ...
      public void run() {
         while (gameNotFinished) {
            // do stuff
         }
      }
  }

run()それが機能しない場合は、キャッチ/ロギングしていない例外が原因でメソッドが停止している可能性があり、したがって気付かない可能性があります。

于 2012-08-13T02:20:28.363 に答える
0

1) 短い答えは、まさに SLaks がすでに言ったことです: 「...同じ実行可能なインスタンスの周りに新しいスレッドを作成し、それを開始するだけです。」

2) "start" の日常的な意味と、Java スレッド メソッド "start()" のセマンティクスの違いについて混乱していると思います。このチュートリアルは役立つかもしれません:

3)同じスレッドを再利用したい場合は、メソッド「wait()」と「resume()」を使用できます。

于 2012-08-13T02:21:10.553 に答える