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

  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] faire attendre un thread sur tous les autres différents

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] faire attendre un thread sur tous les autres différents

n°1338199
Flitz
Posté le 03-04-2006 à 21:01:37  profilanswer
 

Salut à tous  :hello:  
 
je suis en train de programmer une application en Java et j'ai besoin des threads. J'en ai déjà eu besoin auparavant mais ici j'ai un petit problème de conception, je ne vois pas trop comment m'y prendre. Quand je parle de conception c'est quels outils de Java utiliser, c'est comment organiser mon appli. Une fois l'outil désigné il n'y a pas de problème.
 
Voici donc ce que j'essaie de faire. Je possède un vecteur d'objets, tous les mêmes. J'aimerais lancer un thread pour chacun de ces objets. Le thread de chaque objet doit alors réaliser certaines opérations et compléter les informations dans les champs de son objets. Soit X le nombre de thread (et donc d'objets dans le vecteur). J'aimerais qu'une fois que les X threads ont fini de bosser, càd que toutes les infos sont stockées dans le vecteur (tous les champs des objets sont remplis),  qu'un autre thread complètement différent (ou même le thread qui a lancé tous les X autres) soit réveillé. Ce thread devra alors compléter une base de données avec les infos recueillies par les X autres threads.
 
Je viens de chercher sur le net et j'ai effectivement trouvé pas mal de chose. Cependant, il ne s'agit pas du tout d'un problème de gestion de données partagées puisque chaque thread a son propre objet. J'aimerais faire attendre le thread de la base de données tant que le vecteur n'est pas complet. Si je n'avais que deux threads j'aurais pu jouer avec synchronized ou notify mais là j'en ai tout un groupe et un différent.
 
Je suis tombé sur la méthode "join()" pour faire attendre la fin d'un thread mais je me vois mal faire un truc du genre  
 
T1.join();
T2.join();
....
T100.join();
 
pour faire attendre mon thread BD sur tous les autres.
 
Comme je vous l'ai dit, ce n'est pas l'implémentation même qui pose problème mais plutôt l'outils, méthodes, ... à utiliser. Je suis aussi tombé sur des "groupes" de threads, pensez-vous que ce soit une bonne idée.
 
Je recherche la rapidité et l'efficacité avec consommation min de mémoire et CPU (donc boucle infinie on oublie ;-)).
 
Auriez-vous des conseils ou idées ?
 
Merci d'avance.
 
 :jap:


Message édité par Flitz le 04-04-2006 à 11:18:08
mood
Publicité
Posté le 03-04-2006 à 21:01:37  profilanswer
 

n°1338390
nerisson
Pic-pic
Posté le 04-04-2006 à 09:40:23  profilanswer
 

Bon déjà je ne suis pas sur que ca soit une bonne idée de lancer une centaine de threads simultanement, tu risques de passer plus de temps dans le scheduler de thread que dans ton code.
Ensuite tu peut utiliser la méthode join() pour attendre la fin d'éxécution d'un tread.
Dans ton cas, stocke ta liste de thread dans une liste, ensuite parcours ta liste pour les lancer un à un, puis reparcours ta liste pour attendre la fin de chaque thread.


---------------
Light is right
n°1338509
Flitz
Posté le 04-04-2006 à 11:17:41  profilanswer
 

nerisson a écrit :

Bon déjà je ne suis pas sur que ca soit une bonne idée de lancer une centaine de threads simultanement, tu risques de passer plus de temps dans le scheduler de thread que dans ton code.
Ensuite tu peut utiliser la méthode join() pour attendre la fin d'éxécution d'un tread.
Dans ton cas, stocke ta liste de thread dans une liste, ensuite parcours ta liste pour les lancer un à un, puis reparcours ta liste pour attendre la fin de chaque thread.


 
Salut,
 
merci de ta réponse,
 
j'ai trouvé mon bonheur dans la version 1.5 avec les executor et les locket.
 
http://lroux.developpez.com/articl [...] oncurrence


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

  [Resolu] faire attendre un thread sur tous les autres différents

 

Sujets relatifs
Pour les pro des navigateurs .... RESOLU[résolu] LIMIT
RESOLU - COMBOBOX MULTILIGNE[resolu] probleme avec un echo "<a href..." au niveau du ">" de fin
[résolu] [qst] [débutant] Opérations pdt un parcours avec Iterator ?[resolu]trigger ?
[Résolu] Requête complexe sur table ayant 4 champs clé primaireRESOLU - Diviser le contenu d'une cellule pour alimenter une combobox
[resolu]updater une valeur seulement si superieure[resolu] Tri dans un tableau multidimensionnel
Plus de sujets relatifs à : [Resolu] faire attendre un thread sur tous les autres différents


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