Bonjour,

Je m’essaye à l'utilisation des classes Task et Service de JavaFX pour le multithread mais j'avoue que je suis un peu perdu.

Voici le scénario que je cherche à réaliser :
1) Je clique sur un bouton de mon IHM.
2) le click_handler lance un thread en parallèle (Task) qui réalise des calculs longs et complexes. Le thread JavaFX quant à lui se termine et me rend la main sur l'IHM.
3) une fois le thread en parallèle terminé, il modifie les enfants d'une Hbox de mon IHM.

Voici le code que j'ai mis en place.

click_handler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
HBox hboxResultat = (HBox) vboxListInput .getChildren().get(indexHbox);
 
Task<HBox> taskProcessWord = new Task<HBox>() {
 
    @Override
    protected HBox call() throws Exception {
        try {
            //Calculs longs et complexe.
        } catch (Exception e) {
            log.error(e);
        }
 
        //reinit hbox
        HBox myHbox = new HBox();
 
        //ajout nodes à ma hbox
        addInfosToHbox(myHbox);    
 
        return myHbox;
    }
};
 
hboxResultat = taskProcessWord.valueProperty().get();
Thread th = new Thread(taskProcessWord);
th.setDaemon(true);
System.out.println("Starting background task...");
th.start();
Le code ci-dessus ne produit aucun résultat.

Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

Merci d'avance pour votre aide.