【发布时间】:2019-08-28 15:00:59
【问题描述】:
我正在尝试运行一些代码,这些代码将在 100 毫秒后启用一个变量,再等待 100 毫秒然后禁用它
我尝试使用 2 个计时器,并创建一个新线程并将其休眠。这两种解决方案都会导致主线程挂起一秒钟左右。
我用于计时器的代码:
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,这对过程的其余部分没有影响。为什么会发生这种情况,我应该怎么做?
【问题讨论】:
-
这些都不会导致主线程处理。问题出在其他地方。
-
如果这是一个 Swing 程序,请使用 Swing Timer。
标签: java multithreading timer