IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[Thread] Refaire une iteration seulement si l'ensemble des threads ont terminé


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut [Thread] Refaire une iteration seulement si l'ensemble des threads ont terminé
    Bonjour,

    J'ai un programme qui permet :

    1- d'obtenir une liste de fichiers dans un serveur.

    2- Cette liste est traité par un ensemble de threads.

    3- Apres un certain temps, on refait une relecture sur le serveur pour savoir s'il y'a des nouveaux fichiers, si c'est le cas on refait le meme process.

    Jusqu'à maintenant tous se passe bien, je voudrais ajouté une condition :

    Refaire le process de lecture sur le serveur sous deux conditions :

    * Écoulement du temps pour refaire une lecture (Thread.sleep(time_ms))

    * Attendre que les threads precedants soient terminée

    Je sais que dans les threads y'a la constante TERMINATED de Thread.state

    ThreadReader est la classe qui fait le traitement pour un thread, c'est a dire dans le main je crée une liste de ThreadReader

    Le problème est que je trouve pas le moyen d'ajouté la seconde condition aux programme principale qui permet de vérifier si tous les threads précédants ont fini pour refaire la lecture

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si la liste est dénombrable dès le début (elle ne varie plus après le démarrage du premier thread), tu peux simplement utiliser un CountDownLatch (un compteur initialisé avec un nombre, que l'on peut décrémenter dans les threads, et dont on peut attendre dans le thread principal qu'il est atteint 0).

    Autre solution, au lieu d'utiliser des threads, utiliser un ExecutorService, et lui envoyer autant de tâches que d'éléments dans la liste (avantage : on peut plus facilement limiter le nombre de threads maximum et on peut ajouter des nouvelles tâches dans la liste après le démarrage de la première) : tu peux attendre la fin de l'exécution des tâches dans l'ExecutorService.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Merci Joel pour votre réponse,

    La taille de la liste des threads est bien fixe.

    Je décrémente le compteur de CountDownLatch a la fin de la méthode run() ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par facilus68 Voir le message
    Je décrémente le compteur de CountDownLatch a la fin de la méthode run() ?
    Oui.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Points : 102
    Points
    102
    Par défaut
    Ca fonctionne bien avec CountDownLatch .

    Merci beaucoup Joel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/07/2011, 17h09
  2. Gestion des threads dans une application swing
    Par MaxLaMenaX dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 10/11/2010, 22h46
  3. [XL-2010] hauteur d'une listBox pour montrer l'ensemble des items
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/10/2010, 10h06
  4. Appel des threads lors une requete du client
    Par khaigo dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/10/2010, 07h35
  5. Comment stocker des threads dans une liste?
    Par Zoners dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 21/04/2010, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo