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:
file_globale est un vecteur de type Requete (thread) et c'est dans cette file que je veux bloquer les requêtes
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 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;}
le lancement de ce Thread se fait par
l'erreur se trouve au niveau de l'instruction : try{file_globale[fin].wait();}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class lancer(){Requete requ=new Requete[nb_req]......... for (int n = 0; n < nb_req; n++) { requ[n].start();}...............................}
pourriez vous m'expliquer la raison de cette erreur
merci beaucoup
Partager