我的JavaFX程序在ListView中有一个IP地址列表,我想定期遍历每个地址并在每个地址上调用INetAddress.isReachable。问题是每个调用都有一个超时关联,这意味着程序在等待不可用地址的超时时挂起。对此的自然解决方案是线程,但是我无法找到阻止UI挂起的方法。我试过JavaFx's concurrent package,我尝试在新线程中的Timer上运行Timer Task。我觉得我在这里遗漏了一些明显的东西。
使用JavaFX并发:
Task task = new Task() {
@Override
protected Object call() throws Exception {
while(true) {
checkEachIP();
Thread.sleep(5000);
}
}
};
new Thread (task).start();
答案 0 :(得分:-3)
如果您只想让任务在后台运行:
变化:
new Thread (task).start();
要:
Thread thread = new Thread (task);
thread.setDaemon(true); // will run in the background
thread.start();