ExecutorService - 用已完成任务的数量填充 JavaFX 中的进度条

ExecutorService - fill up progress bar in JavaFX with the number of finished tasks

我有一个代码可以通过 ExecutorService 并发发送文件。但是,我想在 JavaFX 中有一个进度条,它会填满已发送的文件数。

我将如何实现?

我正在通过 List<Callable<String>> clientTasks = new ArrayList<>(); 创建任务,并通过 es.invokeAll(clientTasks);

启动它们

谢谢。

您可以按照以下方式进行操作:

IntegerProperty completed = new SimpleIntegerProperty(0);
List<Callable<String>> wrappedTasks = new ArrayList<>();
for (Callable<String> task : clientTasks) {
    wrappedTasks.add(() -> {
        String result = task.call();
        Platform.runLater(() -> completed.set(completed.get()+1));
        return result ;
    });
}
completed.addListener((obs, oldValue, newValue) -> 
    progressBar.setProgress(1.0 * newValue.intValue() / clientTasks.size()));
es.invokeAll(wrappedTasks);