le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?

A+