我有一个运行我的游戏循环的线程。我希望每次开始新游戏时都能运行这个游戏循环。但由于Java中的线程只能启动一次,我该怎么做呢?
答案 0 :(得分:3)
在同一个Thread
实例周围创建一个新的Runnable
并启动它。
答案 1 :(得分:2)
由于您希望运行游戏循环的线程继续运行它,因此您需要对其进行编码:
public class GameLoop implements Runnable {
...
public void run() {
while (gameNotFinished) {
// do stuff
}
}
}
如果这不起作用,那么run()
方法很可能会因为你没有捕获/记录而没有注意到而导致死亡。
答案 2 :(得分:2)
1。当您说"you need to run a thread"
时,我的意思是您希望在单独的主题上启动子任务。
2. 现在,如果您的意思是某个子任务,那么请更喜欢运行 new thread
。
3。正如您所说But since the threads in Java can only be started once
这意味着当thread (thread of execution)
完成其 run()
方法时,与之关联的Thread对象会永久地丢失其线程,对......
但如果此线程来自池 ,则池本身将管理Thread对象及其重用。尝试使用Executors
包中的java.util.concurrent
。
答案 3 :(得分:0)
1)简短的回答正是SLaks已经说过的:只是“......在同一个可运行的实例周围创建一个新线程并启动它。”
2)我认为你可能会对“start”的日常含义与Java Thread方法“start()”的语义之间的区别感到困惑。本教程可能有所帮助:
3)如果您希望重新使用相同的线程,可以使用方法“wait()”和“resume()”: