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

Concurrence et multi-thread Java Discussion :

Comment endormir les threads.


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut Comment endormir les threads.
    Bonjour,

    je fait de la synchronisation entre une dizaine de threads.

    Les threads représentes les noeuds d'un graphe. Et le graphe représente un environnement que l'on veut simuler.

    Hor je voudrais pouvoir effectuer la simulation pas à pas (c'est a dire que on avance d'un pas dans la simulation quand je pousse un bouton).

    Est il possible d'endormir tous les threads en meme temps? Et quand j'appuie sur le bouton, il reprenne tous ou ils en etaient?

    Si quelqun a une idée...

  2. #2
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Si la classe qui contient ton bouton a une référence vers chacun de tes autres threads, tu récupère ta liste de threads et tu les endors tous. Sinon je ne vois pas comment faire, en tout cas pas dans l'instant.

  3. #3
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Merci, mais c'est ce que je fais deja. En fait ce que je voudrai, c'est un moyen de tous les endormir au meme moment.

    Car moi ce que je fais c'est que je les endorts tous avec une boucle for.

    Et quand le premier thread de la liste est endormis le dernier continue encore de tourner, ce qui entraine des buggs.

  4. #4
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Pour faire du pas à pas, tu pourrais utiliser des wait() et des notify() ou notifyAll() selon ton besoin, mais je ne vois pas alors comment reprendre une exécution "normale" et non pas "pas à pas"...

  5. #5
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    J'utilise les notifyAll et wait pour synchroniser l'écriture et la lecture du tampon mémoire par les threads. Mais cela m'enpeche d'utiliser les wait et notify pour faire du pas a pas.
    Comme solution (qui permet aussi de remettre la simulation en mode normal) j'utilise cette instruction
    .

    Ainsi quand le boolean est vrai alors le processus est bloqué dans la boucle while. Ainsi c'est presque comme si le thread dormait. Mais le probleme est quand réalité il ne dort pas et il boucle a l'infini.

    Moi je cherche un moyen donnant le meme resultat que l'instruction si dessus, mais qui ne bouffe pas de ressources.

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    Bah dans ce cas là tu ne peux pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(boolean){Thread.sleep(1000)}
    par exemple?

    Comme ca c'est la même chose mais tu n'utilises quasiment jamais de ressources. Sinon c'est que je n'ai toujours rien compris à ton problème...

  7. #7
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Merci c'est exactement ca qu'il me fallait, j'y avais penser cette nuit aussi


    merciiiiii

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

Discussions similaires

  1. Comment appeler les threads
    Par raphi93 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/04/2008, 10h01
  2. [VS2005] Comment visualiser les threads ?
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/11/2007, 07h54
  3. comment utiliser Les threads
    Par alaa_85 dans le forum VB.NET
    Réponses: 33
    Dernier message: 08/06/2007, 13h53
  4. Réponses: 19
    Dernier message: 03/01/2007, 14h49
  5. Comment utiliser les Threads en VC++?
    Par mambo dans le forum MFC
    Réponses: 2
    Dernier message: 16/06/2006, 14h04

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