Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
905 connectés 

  FORUM HardWare.fr
  Programmation
  Java

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°205385
bobuse
Posté le 30-08-2002 à 09:55:21  profilanswer
 


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
mood
Publicité
Posté le 30-08-2002 à 09:55:21  profilanswer
 

n°205387
Cherrytree
cn=?
Posté le 30-08-2002 à 09:58:00  profilanswer
 

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
n°205388
bobuse
Posté le 30-08-2002 à 10:03:50  profilanswer
 

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  :(

n°205393
BifaceMcLe​OD
The HighGlandeur
Posté le 30-08-2002 à 10:08:16  profilanswer
 

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).

n°205398
darklord
You're welcome
Posté le 30-08-2002 à 10:13:05  profilanswer
 

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
n°205401
bobuse
Posté le 30-08-2002 à 10:14:04  profilanswer
 

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 ;) )

n°205402
bobuse
Posté le 30-08-2002 à 10:14:21  profilanswer
 

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:

n°205403
Cherrytree
cn=?
Posté le 30-08-2002 à 10:15:05  profilanswer
 

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


---------------
Le site de ma maman
n°205430
bobuse
Posté le 30-08-2002 à 10:47:59  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

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

 

Sujets relatifs
Clonage d'objets RESOLU[C++] Comment recuperer un fichier en local par http?? [RESOLU]
<DIV> : problème de position absolue et relative [résolu][C++ BUILDER]Utilisation de TImage [RESOLU]
[visual C++] Quel livre pour étudier seul les mfc ?[résolu][poo/c++] héritage, constructeur et destructeurs
thread et nanosleep( )Passage d'un pointeur en paramètre de fonction
faire un wait() sur un Thread déjà suspendu + comment killer 1 threadagir sur un groupe de thread, méthode activeCount()
Plus de sujets relatifs à : 1 seul passage dans run() pour une instance de Thread [Resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR