thread : probleme avec start

thread : probleme avec start - Java - Programmation

Marsh Posté le 27-04-2005 à 14:42:09    

:hello:  
 
'ta' est une classe héritant de thread.
 

Code :
  1. while(true) {
  2. ta.start();
  3. r1.message_a_envoyer = r1.reflechit(null);
  4. System.out.println("encore en vie ?"+ta.isAlive());
  5. System.out.println("attente affichage)" );
  6. ta.join();
  7. System.out.println("join" );
  8. System.out.println("encore en vie2 ?"+ta.isAlive());
  9. }


 
voici la console :
 

Citation :


encore en vie ?true
attente affichage)
join
encore en vie2 ?false
java.lang.IllegalThreadStateException
 at java.lang.Thread.start(Thread.java:571)
 at test.main(test.java:16)


 
apparement c'est lors du 2eme passage qu'il apprecie pas mais je ne comprends pas pkoi  :??:

Reply

Marsh Posté le 27-04-2005 à 14:42:09   

Reply

Marsh Posté le 27-04-2005 à 14:45:45    

Dans le deuxième passage il est déjà lancé ton thread. Donc tu ne peux pas le relancer.
 
 
Fait démmarer ton thread juste avant ton while.

Reply

Marsh Posté le 27-04-2005 à 14:56:31    

Bysounours a écrit :

Dans le deuxième passage il est déjà lancé ton thread. Donc tu ne peux pas le relancer.
 
 
Fait démmarer ton thread juste avant ton while.


 
ok.
donc ensuite je dois juste faire run ?

Reply

Marsh Posté le 27-04-2005 à 15:05:27    

ta.start() va appeler la méthode run() de "ta".
 
donc pas besoin de faire de nouveau un appel à ta classe dans la boucle while(ta methode run s'execute en continue jusqu'a ce qu'elle arrive à son terme), sauf si c'est sur d'autres methodes comme tu le fait avec "ta.join()".

Reply

Marsh Posté le 27-04-2005 à 16:27:57    

Bysounours a écrit :

ta.start() va appeler la méthode run() de "ta".
 
donc pas besoin de faire de nouveau un appel à ta classe dans la boucle while(ta methode run s'execute en continue jusqu'a ce qu'elle arrive à son terme), sauf si c'est sur d'autres methodes comme tu le fait avec "ta.join()".


 
oui d'accord mais vu que je fais un join le thread est fini, il faut donc le relancer au prochain tour ?

Reply

Marsh Posté le 27-04-2005 à 17:23:38    

Je connais mal les threads, mais il me semble qu'il n'est pas possible de relancer un thread qui a terminé. Essaye d'en réinstancier un.


---------------
Le site de ma maman
Reply

Marsh Posté le 27-04-2005 à 17:29:01    

Cherrytree a écrit :

Je connais mal les threads, mais il me semble qu'il n'est pas possible de relancer un thread qui a terminé. Essaye d'en réinstancier un.


dans ce cas, on fait un Runnable, et quand le thread qui le faisait tourner a fini, on le passe à un autre thread.
 
ça permet de ne pas ré-instancier la partie business.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 27-04-2005 à 17:34:21    

nraynaud a écrit :

dans ce cas, on fait un Runnable, et quand le thread qui le faisait tourner a fini, on le passe à un autre thread.
 
ça permet de ne pas ré-instancier la partie business.


 :jap:


---------------
Le site de ma maman
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed