Question sur la synchronisation des threads
le code
Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
public class Synchr1 //// SYNCHRONISER LES THREADS ////
{
public static void main (String args[])
{
Nombres nbr = new Nombres() ;
Thread calc = new ThrCalc (nbr) ;
Thread aff = new ThrAff (nbr) ;
System.out.println("Suite de carres - tapez retour pour arreter") ;
calc.start() ;
aff.start() ;
Clavier.lireString() ;
calc.interrupt() ;
aff.interrupt() ;
}
}
class Nombres
{
private int n=0, carre=0 ;
public synchronized void calcul()
{
n++ ;
carre = n*n ;
}
public synchronized void affiche ()
{
System.out.println(n + " a pour carre " + carre) ;
}
}
class ThrCalc extends Thread // la classe qui calcule le carré qui hirite de la classe thread
{
private Nombres nomb ;
public ThrCalc (Nombres nomb)
{
this.nomb = nomb ;
}
public void run()
{
try
{
while (!interrupted())
{
nomb.calcul ();
sleep (50);
}
}catch (InterruptedException e) {}
}
}
class ThrAff extends Thread
{
private Nombres nomb ;
public ThrAff (Nombres nomb)
{
this.nomb = nomb ;
}
public void run ()
{
try
{
while (!interrupted())
{
nomb.affiche() ;
sleep (75) ;
}
}catch (InterruptedException e) {}
}
} |
Bonjour,
ci-dessus un simple exemple sur la synchronisation des threads et je n'arrive pas à saisir comment fonctionne la synchronisation des threads en particulier dans ce petit exemple ma question est :
1- comment le code sait qu'il faut commencer par calculer le carré ensuite afficher d'une autre manière comment fonctionne la méthode synchronized ? dans ce code ? :oops:
A+