我有一个运行我的游戏循环的线程。我希望每次开始新游戏时都能运行这个游戏循环。但是由于Java中的线程只能启动一次,我该怎么做呢?
4 回答
Thread
围绕同一个实例创建一个新Runnable
实例并启动它。
由于您希望运行游戏循环的线程继续运行它,因此您需要编写如下代码:
public class GameLoop implements Runnable {
...
public void run() {
while (gameNotFinished) {
// do stuff
}
}
}
如果这不起作用,那么该run()
方法很可能由于您没有捕获/记录的异常而死亡,因此没有注意到。
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 对象将永久失去其线程性,对....
但是如果这个线程来自一个池,那么池本身管理线程对象和它的重用。尝试Executors
从java.util.concurrent
包中使用。
1)简短的回答正是 SLaks 已经说过的:只是“......围绕同一个可运行实例创建一个新线程并启动它。”
2) 我认为您可能对“start”的日常含义和Java Thread 方法“start()”的语义之间的区别感到困惑。本教程可能会有所帮助:
3) 如果你想重复使用同一个线程,你可以使用方法“wait()”和“resume()”: