public final void execute(final TimeTask<?> task) { Platform2.runOnFXThread( () -> { synchronized (scheduledTasks) { if (isIdleBinding.get()) currentTaskProperty.setValue(task); scheduledTasks.add(task); task.progressProperty() .addListener( (__, ___, ____) -> { overallProgressBinding.invalidate(); datasetProgressBindings.values().forEach(DoubleBinding::invalidate); }); task.stateProperty() .addListener( (__, ___, ____) -> { overallProgressBinding.invalidate(); datasetProgressBindings.values().forEach(DoubleBinding::invalidate); }); } }); }