我们说我有自定义TimerTask
做事。
通常,计时器任务看起来像这样:
public class MyTimerTask extends TimerTask {
@Override
public void run() {
// Do work...
}
}
我计划通过Timer
连续重复循环每10秒执行一次。
Timer myTimer = new Timer();
MyTimerTask myTask = new MyTimerTask();
myTimer.schedule(myTask,0,10000);
在正常情况下,这很好用,但由于我在此任务中执行了一些GUI更新操作,因此我必须从JavaFX应用程序线程调用Runnable
。
实质上,这意味着当我想要运行它时,我必须在Platform.runLater
(MyTimerTask
)上调用Runnable
。
但是因为我没有明确地调用run()
任务,因为我通过Timer.schedule
将它放在TaskQueue上,我不得不求助于将MyTimerTask
改为类似这样:
public class MyTimerTask extends TimerTask {
@Override
public void run() {
Platform.runLater(
new Runnable() {
public void run() {
//Do work...
}
}
);
}
}
这感觉就像是一种非常粗暴的方式。
所以我想知道是否有更好的方法来做到这一点?