小编Kar*_*ani的帖子

JavaFX 更新进度条并等待线程完成

我正在尝试更新 Java FX 中的进度条。我的第一个问题是窗口说“没有响应”而不是实际更新。它只是冻结,然后在任务完成后,进度条变满。所以我发现我必须使用多线程并像这样实现它。

overallList.clear();
progressbar.setprogress(0);

for(Object obj : list) {
    class ThreadProgress implements Runnable { // inner class
        public void run() {
            thisList = scrape(obj);
            overallList.add(thisList);
            progressbar.setProgress(progressbar.getProgress() + (double)1/size);
        }
    }

    Thread current = new Thread(new ThreadProgress());
    current.start();
}

textAreaConsole.setText("Total number of things:" + overallList.size());
Run Code Online (Sandbox Code Playgroud)

但现在的问题是最后一行打印“事物总数:0”,因为在机器运行最后一行之前,线程实际上并没有完成执行。然后我找到了多种方法来解决这个问题,特别是使用 join() 或 ExecutorService。我像这样实现了 join() 。

overallList.clear();
progressbar.setprogress(0);
List<Thread> threads = new ArrayList<Thread>();

for(Object obj : list) {
    class ThreadProgress implements Runnable { // inner class
        public void run() {
            thisList = scrape(obj);
            overallList.add(thisList); …
Run Code Online (Sandbox Code Playgroud)

java user-interface multithreading javafx

1
推荐指数
1
解决办法
1626
查看次数

标签 统计

java ×1

javafx ×1

multithreading ×1

user-interface ×1