Bonjour,
Je ne comprends absolument pas le comportement de ma méthode, on m'a expliqué de la méthode wait() appliqué à un thread le met en attente, il ne fait donc plus rien jusqu'à ce qu'un autre thread (comme le main par exemple) lui matte un notify() ou un notifyAll().
J'ai une JFrame avec un bouton start qui lance un thread "calcul"
Voici ce que je met dans la méthode ActionPerformed:
Le thread est initié dès la construction de la classe affichant une fenêtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if(arg0.getActionCommand().equals("Start")) { calcul.start(); try{ calcul.wait(); }catch(InterruptedException ie) {ie.printStackTrace();} }
Voici la méthode run() de mon Thread :
Normalement, le Thread devrait commencé et immédiatement après se mettre en pause, mais il commence, ne se met pas en pause, et renvoi l'exception java.lang.IllegalMonitorStateException sur la ligne ou je fais mon wait().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void run() { int monInt=nombre; while(true) { monInt++; essai.getLabel().setText("The Number is : "+monInt); essai.setNombre(monInt); } }
Quelqu'un pourrait-il m'expliquer ceci?
Je suis déjà arriver à faire des pauses avec les Thread, mais j'aimerais savoir pourquoi les méthodes wait()/notify() renvoyent ce type d'erreurs sans faire ce qu'elles sont censées faire.
Je vous remercie vivement de vos réponses
Partager