1 seul passage dans run() pour une instance de Thread [Resolu]

1 seul passage dans run() pour une instance de Thread [Resolu] - Java - Programmation

Marsh Posté le 30-08-2002 à 09:55:21    


Bon j'ai un thread qui fait son run() .......... [ OK ]
je fais d'autre trucs .......................... [ OK ]
mon premier thread me dit qu'il a fini ......... [ OK ]
je fais quelques trucs ......................... [ OK ]
Je vérifie que mon premier est plus Alive ...... [ OK ]
Je refais un start() dessus .................... [ OK ]
après, je vérifie qu'il est Alive .............. [ OK ]
au début du run() de mon thread System.out ... [ FAILED ]


... bloquage de mon thread !
 
en gros j'appelle start() sur mon thread une première fois, ça marche, et la deuxième fois, il fout rien !!
 
? que passa doctor ?
 
pour être sûr d'être clair :

Code :
  1. System.out.println("111"+requetesThread.isAlive());
  2.                     requetesThread.start();
  3.                     System.out.println("222"+requetesThread.isAlive());


les deux affichage marchent à tous les coups (false et true)
 

Code :
  1. public void run() {
  2.         System.out.println(this+" : dmarrage" );
  3.         // ....
  4.     }


l'affichage marche la première fois, mais la deuxième, et il litérallement bloqué !


Message édité par bobuse le 30-08-2002 à 10:16:17
Reply

Marsh Posté le 30-08-2002 à 09:55:21   

Reply

Marsh Posté le 30-08-2002 à 09:58:00    

Il me semble que la propriété alive couvre une période plus large que ce qu'on croit. D'après ce que j'ai lu dans Java Thread de O'reilly, il se pourrait qu'il y ait un piège. Mais ma mémoire me jouant des tours, je me contente de pointer le risque, sans t'apporter la confirmation.


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

Marsh Posté le 30-08-2002 à 10:03:50    

Cherrytree a écrit a écrit :

Il me semble que la propriété alive couvre une période plus large que ce qu'on croit. D'après ce que j'ai lu dans Java Thread de O'reilly, il se pourrait qu'il y ait un piège. Mais ma mémoire me jouant des tours, je me contente de pointer le risque, sans t'apporter la confirmation.




bien essayé, mais j'y crois pas trop (dans mon cas).
A la fin de mon run, j'ai un :
        System.out.println(this+" : fin du thread" );
et il s'affiche avant mon "111 ...".
J'ai même essayé en mettant un wait(10000) dans mon thread principal (avant le "111 ..." ) ==> pareil  :(

Reply

Marsh Posté le 30-08-2002 à 10:08:16    

De mémoire, j'avais déjà eu le problème : un thread ne peut être lancé qu'une seule fois. Si tu veux le relancer, il faut en fait créer un nouvel objet java.lang.Thread.
 
Autre solution, si tu veux quand même partager ton objet java.lang.Thread : jouer avec les wait() et les notify() (ou avec les stop() et resume(), mais ces 2 dernières méthodes sont deprecated depuis plusieurs versions de JDK).

Reply

Marsh Posté le 30-08-2002 à 10:13:05    

c'est juste. Le cycle de vie de thread n'a qu'un et un seul passage dans run. Une fois que tu sors de ta méthode run l'objet ne peut plus etre utilisé.
 
A+


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-08-2002 à 10:14:04    

BifaceMcLeOD a écrit a écrit :

De mémoire, j'avais déjà eu le problème : un thread ne peut être lancé qu'une seule fois. Si tu veux le relancer, il faut en fait créer un nouvel objet java.lang.Thread.




 :ouch: C'est vrai ?
 
c'est relou !! :cry:  
 
J'ai plein d'instances dans ma classe "MyThread"
 
bon ben, j'ai plus qu'à muter mon MyThread en MyRunnable, et dans la méthode run(), j'instancie un nouveau Thread à chaque fois.
 
Si quelqu'un pouvait confirmer ... (quoique j'ai pas de raison de pas faire confiance en McLeod ;) )

Reply

Marsh Posté le 30-08-2002 à 10:14:21    

DarkLord a écrit a écrit :

c'est juste. Le cycle de vie de thread n'a qu'un et un seul passage dans run. Une fois que tu sors de ta méthode run l'objet ne peut plus etre utilisé.
 
A+




 
oki oki
 :hello:

Reply

Marsh Posté le 30-08-2002 à 10:15:05    

Je confirme : un seul passage dans run. :jap: Bravo. :jap:


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

Marsh Posté le 30-08-2002 à 10:47:59    

[:zjk] [:yaisse2] Ca marche (2 jours que ça merdait pour diverses raisons)

Reply

Sujets relatifs:

Leave a Replay

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