Может кто-нибудь помочь мне?
У меня есть программа, которая использует 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? Спасибо:)