1

我有一个运行我的游戏循环的线程。我希望每次开始新游戏时都能运行这个游戏循环。但是由于Java中的线程只能启动一次,我该怎么做呢?

4

4 回答 4

3

Thread围绕同一个实例创建一个新Runnable实例并启动它。

于 2012-08-13T02:08:08.987 回答
2

由于您希望运行游戏循环的线程继续运行它,因此您需要编写如下代码:

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

如果这不起作用,那么该run()方法很可能由于您没有捕获/记录的异常而死亡,因此没有注意到。

于 2012-08-13T02:20:28.363 回答
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 对象将永久失去其线程性,对....

但是如果这个线程来自一个池,那么池本身管理线程对象和它的重用。尝试Executorsjava.util.concurrent包中使用。

于 2012-08-13T02:46:43.307 回答
0

1)简短的回答正是 SLaks 已经说过的:只是“......围绕同一个可运行实例创建一个新线程并启动它。”

2) 我认为您可能对“start”的日常含义和Java Thread 方法“start()”的语义之间的区别感到困惑。本教程可能会有所帮助:

3) 如果你想重复使用同一个线程,你可以使用方法“wait()”和“resume()”:

于 2012-08-13T02:21:10.553 回答