JavaFx - 在等待InetAddress的超时时阻止UI挂起

时间:2017-09-19 11:15:41

标签: java multithreading javafx concurrency

我的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();

1 个答案:

答案 0 :(得分:-3)

如果您只想让任务在后台运行:

变化:

new Thread (task).start();

要:

Thread thread = new Thread (task);
thread.setDaemon(true); // will run in the background
thread.start();