> Tous les forumsAutres langages

 Détecter fin de threads Java
Statut du sujet : NON RESOLU Imprimer
 MekkA
  Posté le 26/08/2005 @ 10:16  
   Astucien


6443 Messages
Bonjour, J'aurais besoin de quelques lumières sur Java. J'ai un programme qui lance plusieurs un nombre variable de threads. Ceux ci s'exécutent et prennent fin d'eux même. Ma question est : comment le processus "père" peut-il détecter la fin de tous les threads lancés ?
 Afficher le profil de MekkA Envoyer un message privé à MekkA
 
 
Publicité
 breizhbugs  Posté le 26/08/2005 à 10:56  
Astucien

3001 Messages
SAlut, Ben en consultant la doc, j'ai remarquer une methode getState() de la classe Thread qui renvoie TERMINATED ( http://download.java.net/jdk6/docs/api/java/lang/Thread.State.html ) lorsque le thread a fini. Donc dans le programme principale tu fais une boucle: class HelloWorld extends Thread { __int delai; __String msgnom; __public HelloWorld(int d,String n) __{ ____delai=d;msgnom="Je m'appelle "+n; __} __public void run() __{ ____System.out.println(msgnom+" et je dormirai au moins "+delai+" sec."); ____try{sleep(1000*delai);} ____catch(InterruptedException e) {}; ____System.out.println(msgnom+" et je vous quitte."); __} } public class test { __public static void main(String[] args) __{ ____HelloWorld[] T=new HelloWorld[5]; ____T[0]=new HelloWorld(2,"ALPHA"); ____T[1]=new HelloWorld(3,"BETA"); ____T[2]=new HelloWorld(5,"GAMMA"); ____T[3]=new HelloWorld(1,"DELTA"); ____T[4]=new HelloWorld(4,"EPSILON"); ____for(int i=0;i<5;i++) ____{ ______T[i].start(); ____} ____boolean pasfini=true; ____while (pasfini) ____{ ______// on attends... ______System.out.println("Le pere attends..."); ______pasfini = false; ______for(int i=0;i<5;i++) ______{ ________if (T[i].getState()!=TERMINATED) __________pasfini = true; ______} ____} ____System.out.println("Le pere a fini d'attendre"); __} }

Modifié par breizhbugs le 26/08/2005 11:03
Afficher le profil de breizhbugs Voir la configuration de breizhbugsEnvoyer un message privé à breizhbugs
 Revenir en haut de la page
 MekkA  Posté le 26/08/2005 à 11:53  
  Astucien


6443 Messages
Salut breizhbugs, Nickel ça devrait le faire comme ça, il me manquait ce getState(). Merci bien !
Afficher le profil de MekkA Voir la configuration de MekkAEnvoyer un message privé à MekkA
 Revenir en haut de la page
 Patator  Posté le 27/08/2005 à 13:24  
Astucien

1883 Messages
breizhbugs a écrit : __public void run() __{ ____System.out.println(msgnom+" et je dormirai au moins "+delai+" sec."); ____try{sleep(1000*delai);} ____catch(InterruptedException e) {}; ____System.out.println(msgnom+" et je vous quitte."); __} } [SNIP] ____for(int i=0;i<5;i++) ____{ ______T[i].start(); ____}
Ce ne serait pas plutôt T[i].run()?
Afficher le profil de PatatorEnvoyer un message privé à Patator
 Revenir en haut de la page
 breizhbugs  Posté le 27/08/2005 à 13:33  
Astucien

3001 Messages
Le code n'est pas de moi! (trouve sur un site) d'apres http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html Run() est la methode a implementer dans la classe Thread mais Start() est la methode a executer pour lancer le parallelisme (donc supposition: si dans le parent on lance Thread.run() en fait le contenu de Run()est execute dans le thread du parent comme une fonction normale?? tandis que la methode start() creer un nouveau fil d'execution et fais s'executer le corps de la fonction run dedans???)
Afficher le profil de breizhbugs Voir la configuration de breizhbugsEnvoyer un message privé à breizhbugs
 Revenir en haut de la page
 Patator  Posté le 27/08/2005 à 15:41  
Astucien

1883 Messages
Oups, en effet. Start lance la méthode Run implémentée il me semble, maintenant que tu le dis. Mes cours de Java remontent à loin. [hi][bigsmile]
Afficher le profil de PatatorEnvoyer un message privé à Patator
 Revenir en haut de la page
 breizhbugs  Posté le 27/08/2005 à 16:59  
Astucien

3001 Messages
Les miens aussi, mais j'utilise google pour trouver de l'aide!
Afficher le profil de breizhbugs Voir la configuration de breizhbugsEnvoyer un message privé à breizhbugs
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page