2 回答
TA贡献1875条经验 获得超3个赞
直到所有非守护线程都完成,主线程才会退出。
您可以通过执行以下操作使计时器线程成为守护进程:
new java.util.Timer(true).schedule(
new java.util.TimerTask() {
@Override
public void run() {
PlayerControl.MoveForward = false;
}
},
100
);
对于普通线程,可以这样做:
Thread thread = new Thread(() -> {
...
});
thread.setDaemon(true);
thread.start();
TA贡献1828条经验 获得超4个赞
就对方法的最少修改而言,类似这样的方法可能会起作用:
new Thread(() -> {
Thread.sleep(100);
PlayerControl.MoveForward = false;
Thread.sleep(100);
PlayerControl.MoveForward = true;
}).start();
如果您希望它永远运行,只需执行以下操作:
new Thread(() -> {
for(;;) {
Thread.sleep(100);
PlayerControl.MoveForward = false;
Thread.sleep(100);
PlayerControl.MoveForward = true;
}
}).start();
如果要限制迭代次数,只需更改for循环内的条件即可。
您的线程方法没有改变任何内容的原因是您从未启动该线程。至于为什么你的主线程挂起,这可能与你没有在此处发布的代码有关。
添加回答
举报