Synchronized en JAVA

printfx000 -  
 Utilisateur anonyme -
Bonjour,

mon code JAVA est le suivant :

public class Parallelisme implements Runnable{
String number;

public Parallelisme(String number){
this.number=number;
}

public void run(){
synchronized(this){
int i;
for(i=0;i<50;i++)
System.out.println(number+i);
}
}

public static void main(String[] args){
Parallelisme pa=new Parallelisme("Processus 1 :");
Thread th=new Thread(pa);
Parallelisme pa2=new Parallelisme("Processus 2 :");
Thread th2=new Thread(pa2);
th.start();
th2.start();
}

}

je souhaiterais que les deux processus s'executent l'un après l'autre (le 1er puis le 2eme).
J'ai mis le synchronized pour cela, mais en vain.
Que dois je ajouter, svp ?

Merci.

9 réponses

  1. printfx000
     
    Je voulais dire: METHODE Synchronized en LANGAGE Java.
    Quoiqu'il en soit, sauriez vous comment faire, svp ?

    Merci.
    0
  2. Joe
     
    Essaye :

    th.start();
    th.join();
    th2.start();
    0
  3. printfx000
     
    j'ai essayé mais j'ai une erreur de compilation:

    unhandled exception type InterruptedException

    Qu'est ce que cela veut dire ?
    0
  4. Joe
     
    Qu'il faut catcher :

    try
    {
    th.start();
    th.join();
    th2.start();
    } catch ( Exception e )
    {
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. printfx000
     
    L'erreur de compilation a disparu, mais le problème des processus simultanés persiste encore. J'ai aussi essayé de mettre un objet en argument à Synchronized à la place de this, mais rien ne change.
    Une autre idée, svp ?

    Merci.
    0
  7. Joe
     
    J'avais un doute mais je viens de tester ton code et avec le join(), les processus s'exécutent bien l'un après l'autre. Heureusement d'ailleurs parce que c'est l'objectif de cette méthode. Le synchronized ne sert pas à ça.

    Peux-tu reposter ton code stp ?
    0
  8. printfx000
     
    c'est bon, c'était une erreur de ma part. j'avais oublié la dernière instruction join()

    Maintenant, ça marche nickel.

    Merci beaucoup.
    0
  9. Utilisateur anonyme
     
    Salut!

    Si tu veux que les 2 processus s'exécutent l'un après l'autre, alors tu n'as pas besoin de Runnable/Thread.

    Ou alors, c'est qu'il manque un élément dans ta question.

    ;-)
    0