java.lang.IllegalMonitorStateException: current thread not owner
salut
j'ai un problème de thread quand je compile j'ai ce message d'erreur
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
Voici la partie qui me cause problème:
Code:
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
| public class Requete extends Thread {
void run()
.
.
.
.
.
Dialog1.fin+=1;
Dialog1.file_globale[Dialog1.fin]=this;
synchronized( Dialog1.file_globale[Dialog1.fin]){
try{Dialog1.file_globale[Dialog1.fin].wait();}
catch(InterruptedException ex4){}
}
.............}
public classe Agent{
....... while(Dialog1.fin>=Dialog1.deb){ //la file n'est pas vide
synchronized(Dialog1.file_globale[Dialog1.deb]){
Dialog1.file_globale[Dialog1.deb].notify();
Dialog1.deb+=1;
}
}
Dialog1.deb=0;//reinitialiser la file globale des requetes
Dialog1.fin=-1;} |
file_globale est un vecteur de type Requete (thread) et c'est dans cette file que je veux bloquer les requêtes
le lancement de ce Thread se fait par
Code:
1 2 3 4
| public class lancer(){Requete requ=new Requete[nb_req].........
for (int n = 0; n < nb_req; n++) {
requ[n].start();}...............................} |
l'erreur se trouve au niveau de l'instruction : try{file_globale[fin].wait();}
pourriez vous m'expliquer la raison de cette erreur
merci beaucoup