Partage
  • Partager sur Facebook
  • Partager sur Twitter

Communication inter-Threads

Need Help

    22 janvier 2012 à 13:50:07

    Salut :)
    je voudrais faire communiquer 2 threads : le premier envoie au second un entier et le deuxieme thread affiche son carré
    voila mon code :
    Carre.java :
    public class Carre {
            static Boolean msgArrived = Boolean.FALSE ;	
            static int n ;
    	
            public static void main(String[] args) {
                Thread sender = new Thread(new Sender()) ;
                Thread receiver = new Thread(new Receiver()) ;
                sender.start() ;
                receiver.start() ;
            }
    	
            public int getN() {
                return n;
            }
        }
    


    Sender.java :
    import java.util.Random;
    
        public class Sender implements Runnable {
    	
            @Override
            public void run() {
                while(Carre.msgArrived == Boolean.TRUE) {
                    try {
                        wait() ;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                for(int i = 0; i < 10; i ++) {
                    Random ran = new Random() ; 
                    Carre.n = ran.nextInt(100) ;
                    Carre.msgArrived = Boolean.TRUE ;
                    notifyAll() ;
                }
            }
        }
    


    Receiver.java
    public class Receiver implements Runnable {
    	
            @Override
            public void run() {
                while(Carre.msgArrived == Boolean.FALSE) {
                    try {
                        wait() ;
                    } 
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Carre.n * Carre.n) ;
                Carre.msgArrived = Boolean.TRUE ;
                notifyAll() ;
            }
        }
    


    Quand je tente de l'exécuter voila ce que je recois :


    Exception in thread "Thread-1" java.lang.IllegalMonitorStateException

    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at Receiver.run(Receiver.java:12)
    at java.lang.Thread.run(Thread.java:636)


    Exception in thread "Thread-0" java.lang.IllegalMonitorStateException

    at java.lang.Object.notifyAll(Native Method)
    at Sender.run(Sender.java:20)
    at java.lang.Thread.run(Thread.java:636)



    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 janvier 2012 à 15:55:29

      Regarde ce tutoriel peut être que ca va d'aider.
      Mais ce que tu veux faire n'est pas fait de façon safe.
      • Partager sur Facebook
      • Partager sur Twitter

      Communication inter-Threads

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown