[英]Timer won't stop when there is a Thread.sleep inside Java
您好,我有这段代码来使用javafx显示图像
public void CantaCarta() throws InterruptedException {
startGame.setDisable(true);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
SwingUtilities.invokeLater(() -> {
for (int x=1; x<55;x++){
Image image = new Image(getClass().getResource("imgs/"+JuegoLoto.Muestra(x-1)+".jpg").toString(), true);
cantada.setImage(image);
if (x >= 54) {
System.out.print("Termina");
timer.cancel();
} else {
System.out.print(" "+x+" ");
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
}
}
}
});
}
}, 0, 1000);
}
图像将正确显示,但当屏幕上出现图像编号54时,它将循环返回1,这是因为
Thread.sleep(200);
我该如何解决? 我想延迟图像之间的时间
这没有任何意义。
这样您将获得:
因此,您将获得大约十或十一个任务的迭代,大部分是并行的。
我建议你:
以200ms的间隔安排任务,使每次调用时都显示下一个顺序图像,环绕到开始处或取消计时器,或者在到达最后一个图像时进行所需的任何操作,以及
摆脱内部循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.