首页 > 解决方案 > Javafx 应用程序 GUI 在执行查询时冻结

问题描述

我正在尝试构建一个将在循环中执行多个查询的应用程序。查询将一个接一个地执行(一个接一个)。如果我在一个线程中编写代码,则 GUI 会在查询期间冻结(它们需要一段时间),只有在它们完成后才会再次激活,我也希望有一个工作进度条。

protected void onButtonClick() throws InterruptedException {
    String[] array = getIDs();

    progressText.setText("Starting...");
    for (int i = 0; i < array.length; i++) {
        progressText.setText("Updated: " + i + " of " + array.length + " ids.");

        executeSingleQuery(array[i]);
    }
    progressText.setText("Done!");
}

我知道我可能应该在线程上工作,但我真的不知道如何。如果我添加

new Thread(() ->executeSingleQuery(array[i])).start();

对于循环,每次迭代都会创建一个新线程,我的观点是查询应该一次执行一个;另外我希望进度条正常工作。你能帮我找到解决办法吗?

标签: javamultithreadingjavafx

解决方案


推荐阅读