Bonsoir ,
J'ai un programme qui doit attendre un évenment qui se passe pas dans sa classe (une reception de message par socket , qu'un autre thread s'occupe ) Une fois que le message est reçu , pour communiquer avec mon autre thread j'ai pensé à faire un attribu String message initialisé à null et lorsque que je reçois mon message dans mon autre classe je met cette attribu à la valeur reçu (différente de null) . Et dans le thread pour attendre je fais while(this.message==null){} , voici le code :
J'ai fait tout les vérification possible pour vous dire que l'attribut this.message se change trés bien (test dans la méthode setMessage() , mais apparemment le run() du Thread n'en prend pas compte dans la boucle while ) .
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Bon ensuite , dans le cadre de mon programme il me fallait un Timer , c'est à dire au bout de x secondes on regarde si on a reçu le message ou pas .
Ce code a bien marché , mais à partir de là mon Thread va forcémment attendre xxTemps et si on reçoit le message avant on est marron , il faut atendre .
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
J'ai pensé à la méthode notify() qui "r"veilleré" mon Thread , donc j'ai essayé ça :
Mais lorsque notify() est appelé j'ai l'exception : java.lang.IllegalMonitorStateException .
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Du coup j'ai cherché un peu sur le net , j'ai essayé d'ajouter le mot clé synchronized à mes méthodes mais en vain .
Si vous avez des solutions à me proposer , surtout pour le second prblème (c'est à dire avec l'utilisation du Time) ! Et sinon au problème initial !
Meci beaucoup!

 

 
		
		 
        

 
			
			



 
			 
   
 


 Attendre qu'un attribut change de valeur pour communiquer entre deux Thread .
 Attendre qu'un attribut change de valeur pour communiquer entre deux Thread .
				 Répondre avec citation
  Répondre avec citation
Partager