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

avec Java Discussion :

[THREAD] Problème synchronisation


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 57
    Points
    57
    Par défaut [THREAD] Problème synchronisation
    Bonjour,
    Débutant en java, je developpe un programme qui utilise 2 threads: T1 et T2
    J'aimerai faire un wait() sur T1 jusqu'a ce que T2 lui donne l'ordre de continuer.
    J'ai fait un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class T1 extends Thread
    {
        public void run() {
                            //... code a executer dans le thread ...
                try {
                    wait(); // bloque jusqu'a un notify()
                }
                catch(InterruptedException e) {};
                            //... code a executer dans le thread ...
        }
    }
     
    public class Thread2 extends Thread
    {
        public void run() {
            notifyAll(); 
        }
    }
    Et j'obtient lors de l'execution le message d'erreur suivant: "current thread not owner"
    Comme je n'y connais pas grand chose en thread quelqu'un pourrait-il me dire d'où vient le problème?

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Déjà, met des balises CODE pour mettre correctement ton code...

    Pour le problème, il faut appliquer wait() et notify() sur le même objet.

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Et de plus, il faut se synchroniser sur cet objet commun pour appeler wait et notify :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Thread1 extends Thread {
     
      public final static Object LOCK = new Object();
     
      public void run() {
        ...
        try {
          synchronized(LOCK) {
            LOCK.wait();
          }
        } catch (InterruptedException e) {
          ...
        }
      }
    }
    Et de même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Thread2 extends Thread {
      public void run() {
        ...
        synchronized(Thread1.LOCK) {
          Thread1.LOCK.notify();
        }
        ...
      }
    }
    La référence pour écrire des threads, c'est cette page (vers la fin, il y a des bouts du code le plus propre qui soit).

    Si tu veux bien te perfectionner il faut lire les cours Java : http://java.developpez.com/cours/

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 57
    Points
    57
    Par défaut
    Merci pour ton exemple de code xavlours!!!!! Ca marche nikel!
    Et puis bien intéressant ton petit lien. J'ai aussi mis la main sur un tutoriel qui parle de la synchronisation des threads.
    Merci pour l'aide!

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

Discussions similaires

  1. Problème synchronisation Thread()
    Par Anduriel dans le forum Android
    Réponses: 2
    Dernier message: 21/05/2012, 17h15
  2. Problème synchronisation thread
    Par Tinkh dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 27/01/2011, 10h34
  3. [WPF] Circular ProgressBar, problème synchronisation des threads
    Par Babas007 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 20/12/2010, 19h44
  4. Evenement et thread : problème de synchronisation ?
    Par Ricavir dans le forum Windows Forms
    Réponses: 9
    Dernier message: 15/04/2009, 07h31
  5. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57

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