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 :

Threads qui s'attendent mutuellement


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Par défaut Threads qui s'attendent mutuellement
    . .

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bonjour,

    Le manager. Ta première solution utilise en fait deux types de locks : sur le manager et sur chaque thread. C'est redondant. Ce qui a besoin d'être en exclusion mutuelle, c'est la méthode incrDoneThreads() du manager. Il y a pas besoin d'un autre.

    A noter que si le but est juste d'attendre que tous les threads aient fini leur méthode run(), il suffit d'utiliser join(). C'est plus simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Par défaut
    D'accord, merci pour ta réponse.

    Mais il me semble que je ne peux justement pas faire de join() puisqu'une fois que les threads ont terminé leur travail, ils doivent recommencer une boucle (une itération).

    Donc si j'attends qu'ils aient fini avec un join(), je ne pourrais pas les relancer, si ? (A savoir que le but est l'optimisation temporelle donc attendre que les threads aient tous fini et puis les recréer serait trop lent dans mon implémentation, parce qu'il faut à chaque fois répartir entre les threads les calculs à faire. Ici, au lancement du programme les threads sont crées avec leurs calculs à faire assignés et ils itèrent la dessus en attendant les autres à chaque fois).

    En faisant des tests, il se trouve que locker chaque thread semble un peu plus rapide que locker le manager.

    J'avoue avoir une compréhension assez approximative de wait et notify donc j'ai un peu peur du deadlock ou de mal m'y prendre.

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    java.util.concurrent.CyclicBarrier ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 23
    Par défaut
    Je ne peux pas l'utiliser

    C'est pour cela qu'il me faut choisir entre les deux solutions mentionnées

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par romit Voir le message
    Je ne peux pas l'utiliser

    C'est pour cela qu'il me faut choisir entre les deux solutions mentionnées
    Et pourquoi donc? C'est un exercice?

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

Discussions similaires

  1. Thread qui attend une action utilisateur
    Par Anduriel dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 18/05/2012, 22h11
  2. Thread.Sleep qui n'attend pas comme je veux
    Par Chacha35 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/10/2009, 15h46
  3. [Thread]Récupérer un Thread qui tourne
    Par thibaut dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 09/02/2006, 11h43
  4. [THREAD] reveiller un thread qui dort
    Par silouane dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 24/01/2006, 13h39
  5. [Thread] comment arreter un thread qui execute une methode b
    Par Cyber@l dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 04/08/2004, 10h51

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