Bonsoir,
J'ai un souci avec un Thread qui veut pas se mettre en pause. J'ai suivi les indications des FAQs de ce site, mais je n'ai pas réussi à venir à bout du problème. Voici mon code, d'ailleur largement inspiré d'une FAQ:
Dans la classe Calcul, qui étend Thread:
La classe essai présente une JFrame avec deux boutons, voici la méthode gérant les actions associées:
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 public void run() { int monInt=essai.getnombre(); essai.setNombre(monInt); while(!fin) { monInt++; essai.getLabel().setText("The Number is : "+monInt); synchronized(this) { Thread.yield(); System.out.println(stopThread); fin=stopThread; } } } public synchronized void stopMyThread() { this.stopThread=true; }
Le system.out.println renvoi "la réponse est true", donc le booléen stopThread est bien modifié lorsque j'appuie sur "Cancel", mais immédiatement après il repasse à false (le System.out.println dans la méthode run qui renvoie des false) et du coup, on reste dans la boucle while.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void actionPerformed(ActionEvent arg0) { Calcul calcul=new Calcul(this); if(arg0.getActionCommand().equals("Start")) { calcul.start(); } if(arg0.getActionCommand().equals("Cancel")) { calcul.stopMyThread(); System.out.println("la réponse est : "+calcul.isStopMyThread()); } }
Quelqu'un aurait-il une idée à me proposer?
Je vous remercie dans tous les cas de vos réponses et vos conseils :-)
Partager