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 :

[Thread] IllegalMonitorStateException


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut [Thread] IllegalMonitorStateException
    Hello, voila je rebute sur un probleme dont je ne me rappelle plus la solution.

    Je cherche à "scheduler" des threads a partir d'un autre (pouvoir les arreter et les reprendre sur des appels de methodes faits par le thread scheduler).

    Les FAQ parle d'exceptions mais ca correspond pas a ce que je veux, vu qu'une exception fait sortir du bloc try.

    J'essaie avec la methode wait() mais je me chope des
    Citation Envoyé par JVM
    java.lang.IllegalMonitorStateException: current thread not owner
    meme si c'est le thread qui se met lui-meme en sleep.

    un peu de code :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    public class Slave extends Thread {
    	private boolean paused = false;
     
    	public void pause() {
    		paused = true;
    	}
     
    	public void unpause() {
    		paused = false;
    		this.notify();
    	}
     
    	public void run() {
    		pause();
    		while (true) {
    			if (paused) {
    				try {
    					wait();
    				} catch (InterruptedException ie) {
    					ie.printStackTrace();
    				}
    			}
            //etc..
    		}
    	}
    }
    Avec ce code, l'appel de pause() provoque l'appel de wait() qui provoque l'exception.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Les wait et notify ne peuvent se faire qu'a l'interieur de bloc synchronized, c'est pourquoi tu as ces exceptions...
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public class Slave extends Thread { 
       private boolean paused = false; 
     
       public void pause() { 
          paused = true; 
       } 
     
       public void unpause() { 
          paused = false;
          synchronized(this) { 
          this.notify();
          } 
       } 
     
       public void run() { 
          pause(); 
          while (true) { 
             if (paused) { 
               synchronized(this)
               {
                try { 
                   this.wait(); 
                } catch (InterruptedException ie) { 
                   ie.printStackTrace(); 
                }
                } 
             } 
            //etc.. 
          } 
       } 
    }
    Avec ce code cela devrait deja aller mieux...

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    eh ben merci parce que je m'en souviendais pas du tout
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Par défaut
    Merci, cette discussion vient de résoudre mon problème de Thread

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    Merci également :-)

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 30
    Par défaut
    Idem merci.

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Merci également

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

Discussions similaires

  1. java.lang.IllegalMonitorStateException: current thread not owner
    Par wolf797 dans le forum Général Java
    Réponses: 2
    Dernier message: 16/01/2011, 18h22
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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