Oui mais tu dois réfléchir un peu plus de manière fonctionnelle et réactif en découplant tous tes process pour les rendre indépendant (et optionnels) les uns des autres.
Par exemple ( y a plein d'autres manières de faire) :
- Tu récupères ta liste de toto.
- Si on t'as fourni une action a effectuer a la fin du traitement, tu l’exécutes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| // Ceci est invoque lorsqu'on a reçu une nouvelle liste.
private Consumer<List<Toto>> onFinished = null;
public void setOnFinished(Consumer<List<Toto>> value) {
this.onFinished = value;
}
private void runServer() {
// Mettre a jour la liste.
List<Toto> list = [...]
// Si on peut faire quelque chose a la fin alors le faire.
Optional.ofNullable(onFinished)
.ifPresent(c -> c.accept(list));
} |
Ailleurs (dans ta classe application ici)
- tu vérifie que tu es dans le bon thread
- si ce n'est pas le cas, tu te mets dans le bon thread.
- tu effectues le traitement demander a savoir mettre la liste dans la table (ou je sais pas ou).
1 2 3 4 5 6 7 8
| private void updateTotoTable(final List<Toto> list) {
if (! Platform.isJavaFXThread()) {
Plaform.runLater(() -> updateTotoTable(list);
return;
}
// Remplir la table.
[...]
} |
Et a un moment tu enregistre cette méthode sur le contrôleur pour que la réaction puisse se produire :
controller.setOnFinished(this::updateTotoTable);
Partager