【发布时间】:2018-11-18 01:58:19
【问题描述】:
有人可以帮帮我吗? 我有一个使用 JavaFX 的程序。 现在按下按钮后,我想做 n 次计算。 这些计算应该使用线程(并行)完成,它们不应该使主要的 JavaFX 应用程序挂起/冻结。我想要做的是在计算运行时显示加载状态,如果所有任务都完成计算,我想继续程序(删除加载状态并显示结果)。
在阅读了一些关于“JavaFX 中的并发”的内容后,我想到了这个:
for (int i = 0; i < n; ++i) {
CalcTask task = new CalcTask(i);
task.setOnSucceeded(e -> {
// process is just a static method in which I count
// how many results (i) I already received
// (where n is the required amount). If i == n,
// I know I am done with all the tasks
process(task.getValue());
});
new Thread(task).start();
}
还有 CalcTask 类:
public class CalcTask extends Task<Integer> {
protected int id;
public CalcTask (int id) {
this.id = id;
}
@Override
public Integer call() {
return CALCULATION_RESULT;
}
}
现在我的问题是:这对我来说似乎有点“笨拙”。有没有更好的方法在 JavaFX 中实现这样的东西?谢谢:)
【问题讨论】:
标签: java javafx concurrency parallel-processing task