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 :

Pause d'un thread


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut Pause d'un thread
    Bonjour,

    Je travail actuellement sur les threads et j'aurais besoin de quelques precisions.

    J'ai actuellement deux threads qui sont lancés.
    Si j'ai bien compris ils s'executent à tour de role jusqu'a ce qu'ils soit finis.
    Si un thread finis lontemps avant l'autre c'est le 2ieme threads qui prend la main tout le temps.
    Jusque la est-ce bien exacte?

    Maintenant je voudrais que lors de la premiere prise de main l'un de mes threads se mettent en pause Xsecondes pour que l'autre garde la main pendant le minimum de ces X secondes.
    Hors je ne sais pas si je dois faire la pause dans le threads ou dans la fonction qui lance les threads.(par Object.start() )

    Merci de m'orienter.

  2. #2
    Membre éprouvé Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    je te conseille d'aller voir la doc: les threads

    Pour repondre a ta question il faut que tu executes ta commande (par exemple wait() ou sleep()) sur le thread que tu veux gerer. Mais tu peux le faire dans ton processus principal ou dans un autre.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    J'ai déja lu cette doc et pas mal d'autre sur les thread....
    Ca repond pas trop a ma question pour savoir si j'ai bien compris ou pas.

    Si j'execute la wait dans la classe qui extends Thread le Threads va prendre le temps et l'autre ne s'executera pas durant ce temps la, il s'executera qu'une fois la main reprise non?

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Il ne faut pas partir du principe que les threads s'exécutent à tour de rôle, à moins que tu aies un processeur qui a fait la guerre, tu as un processeur qui fait du multi-thread. Même si les threads ne sont pase exécutés réellement en même temps, le temps de passage de l'un à l'autre est vraiment négligeable.

    En partant de ce principe (les 2 threads s'exécutent en parallèle), il est plus facile de comprendre que si tu fais un wait() dans un thread, ça ne changera strictement rien dans l'autre

  5. #5
    Membre éprouvé Avatar de bygui
    Homme Profil pro
    PLM/ALM
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : PLM/ALM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Chaque Thread a un temps processeur pour s'exécuter. C'est une émulation d'un multiprocesseur en fait. Dans un état normal, chaque Thread cohabite en parallèles. Lorsque sa méthode run est terminé, il s'arrête.
    Tu peux endormir l'un des thread, pour laisser a l'autre le temps de d'exécuter une partie de son code. Dans ce cas la, le processus ne fera qu'attendre un notify() pour pouvoir se réveiller (d'où la libération du processeur).
    Donc en gros, un wait() sur un processus leger ne va entrainer une perte de temps processeur

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    D'accord merci de ses précisions.

    Par contre comment faire pour que le wait ne s'effectue qu'une fois?
    Je le met dans ma function run()?

  7. #7
    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
    si tu met un wait(), n'oublie pas qu'un autre thread va devoir faire un notify() sur ce meme objet pour réveiller ton thread. Et oui, le wait() doit etre fait depuis run() ou une méthode appelée par run()

Discussions similaires

  1. [Virtual Pascal] Space invader : mise en pause d'un thread
    Par EpiTouille dans le forum Autres IDE
    Réponses: 1
    Dernier message: 06/11/2011, 18h40
  2. Utiliser Threading.monitor (pause d'un thread)
    Par pISQUIK dans le forum VB.NET
    Réponses: 15
    Dernier message: 09/09/2011, 15h26
  3. Realisation d'une pause avec les thread
    Par toitoine01 dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 10/05/2006, 08h51
  4. [MFC] Faire une pause dans un thread
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2005, 11h49
  5. Pause et reprise d'un thread
    Par raggadoll dans le forum Linux
    Réponses: 5
    Dernier message: 03/07/2003, 20h22

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