Synchronized en JAVA

Fermé
printfx000 - 28 août 2012 à 13:04
 Utilisateur anonyme - 30 août 2012 à 17:47
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.
A voir également:

9 réponses

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

Merci.
0
Essaye :

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

unhandled exception type InterruptedException

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

try
{
th.start();
th.join();
th2.start();
} catch ( Exception e )
{
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
Cool.
Y'a pas de quoi :o)
0
Utilisateur anonyme
30 août 2012 à 17:47
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