java在同一个线程中创建多个计时器会导致主线程延迟
我试图运行一些代码,在100毫秒后启用一个变量,再等待100毫秒,然后禁用它
我试着使用两个计时器,创建一个新的线程并休眠它。这两种解决方案都会导致主线程挂起一秒钟左右
我用于计时器的代码:
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
PlayerControl.MoveForward = false;
}
},
100
);
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
PlayerControl.MoveForward = true;
}
},
200
);
对于线程方法:
new Thread(() -> {
Thread.sleep(100);
PlayerControl.MoveForward = false;
Thread.sleep(100);
PlayerControl.MoveForward = true;
})
我希望这两个结果都等待100毫秒,将变量设置为false,等待100毫秒,然后再次将其设置为true,而不会影响流程的其余部分。为什么会这样,我应该怎么做
# 1 楼答案
就对你的方法进行最少修改而言,这样的方法可能会奏效:
如果你想让它永远运行,只需做如下操作:
如果想限制迭代次数,只需更改
for
循环中的条件即可你的线程方法没有改变任何事情的原因是你从来没有启动过线程。至于你的主线程为什么挂起,这可能与你没有在这里发布的代码有关
# 2 楼答案
在所有非守护进程线程完成之前,主线程不会退出
您可以通过以下操作使计时器线程成为执事:
对于普通线程,您可以执行以下操作: