【发布时间】:2021-03-08 18:56:19
【问题描述】:
我想下载一个文件并等待它下载完成,这样就不会出现“未响应”错误。
if(isNeedToReDownload){
launchStatus.setText(LaunchStatus.DOWNLOADING.status);
downloadThread = new Thread(() -> {
for(File file : launchDir.listFiles()){
file.delete();
}
launchDir.delete();
downloadClient();
downloadMods();
});
downloadThread.start();
}
if(downloadThread != null){
downloadThread.join();
downloadThread.stop();
}
}
launchStatus.setText(LaunchStatus.STARTING.status);
【问题讨论】:
-
启动一个新线程然后调用
join()没有什么意义;您正在阻塞 FX 应用程序线程,因此在后台线程完成之前它无法呈现任何内容。另外,不要打电话给stop()(你的IDE没有警告你吗?)。 -
使用
javafx.concurrent.Task。请参阅文档以了解如何使用。观察任务何时完成,然后酌情执行下一组指令。不要阻塞等待任务完成。如果您阻止 JavaFX 应用程序线程,那么它就无法完成工作,应用程序变得无响应。
标签: java linux windows javafx process