On reprend la classe Ecrivain, mais on voudrait que l'instruction :
System.out.println("A la montagne");
ne s'effectue qu'après que les trois threads lancées par le programme soient achevées.
On utilise pour cela la méthode join de la class thread.
Lorsque l'instruction :
r1.join();
s'exécute, il y a une mise en attente du thread en cours d'exécution jusqu'à ce que le thread r1 soit terminée. r1 bloque le thread en cours d'exécution, et celui-ci sera débloquée par la fin de ce thread.
La méthode join peut lancer une exception du type InterruptedException.
class EcrivainJ
{
public static void main(String[] argv)
{
Repetiteur r1,r2,r3;
r1 = new Repetiteur("soleil");
r2 = new Repetiteur("neige");
r3 = new Repetiteur("ski");
r1.start();
r2.start();
r3.start();
try
{
r1.join();
r2.join();
r3.join();
}
catch(InterruptedException exc) {}
System.out.println("A la montagne");
}
}
On obtient :
soleil
neige
ski
ski
soleil
neige
A la montagne
Le fichier EcrivainJ.java et le fichier Repetiteur.java.
© Irène Charon, Télécom ParisTech 2011