Bonjour,

Alors pour commencer je vous donne mon 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
 
public static void main(String[] args) {
 
      final Object wham= new Object();
		Runnable singer= new Runnable() {
			public void run() {
				try {
					for (int i= 1; i<=100; i++){
						synchronized (wham) { 
					         System.out.println("debut :" +i);
						 wham.wait(); 
						 System.out.println("fin : "+i);
						}
					}
				} catch (InterruptedException e) {
						System.err.println("error"+e);
			        }
		        }        
               };
 
	Thread george= new Thread(singer, "George");
	Thread andrew= new Thread(singer, "Andrew");
	george.start(); andrew.start();
 
         int i= 0;
		while ( george.isAlive() || andrew.isAlive()) {
			synchronized (wham)  {
                        wham.notify();
                        System.out.println("Notify : "+i);}
		         i++;
			}
		System.out.println("\nI had to send " + i + " notifications.");
		}

Maintenant je vous donne le resultat de la console(sequence de fin) :

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
debut : 98
debut : 98
Notify : 2804
Notify : 2805
Notify : 2806
Notify : 2807
Notify : 2808
Notify : 2809
Notify : 2810
Notify : 2811
Notify : 2812
Notify : 2813
Notify : 2814
Notify : 2815
Notify : 2816
Notify : 2817
Notify : 2818
Notify : 2819
Notify : 2820
Notify : 2821
Notify : 2822
Notify : 2823
Notify : 2824
Notify : 2825
Notify : 2826
Notify : 2827
Notify : 2828
Notify : 2829
Notify : 2830
Notify : 2831
Notify : 2832
Notify : 2833
Notify : 2834
fin : 98
fin : 98
Notify : 2835
debut : 99
debut : 99
Notify : 2836
Notify : 2837
Notify : 2838
Notify : 2839
Notify : 2840
Notify : 2841
Notify : 2842
Notify : 2843
Notify : 2844
Notify : 2845
Notify : 2846
Notify : 2847
Notify : 2848
Notify : 2849
Notify : 2850
Notify : 2851
Notify : 2852
Notify : 2853
Notify : 2854
Notify : 2855
Notify : 2856
Notify : 2857
Notify : 2858
Notify : 2859
Notify : 2860
Notify : 2861
Notify : 2862
Notify : 2863
Notify : 2864
Notify : 2865
Notify : 2866
fin : 99
fin : 99
Notify : 2867
debut : 100
debut : 100
Notify : 2868
Notify : 2869
Notify : 2870
Notify : 2871
Notify : 2872
Notify : 2873
Notify : 2874
Notify : 2875
Notify : 2876
Notify : 2877
Notify : 2878
Notify : 2879
Notify : 2880
Notify : 2881
Notify : 2882
Notify : 2883
Notify : 2884
Notify : 2885
Notify : 2886
Notify : 2887
Notify : 2888
Notify : 2889
Notify : 2890
Notify : 2891
Notify : 2892
Notify : 2893
Notify : 2894
Notify : 2895
Notify : 2896
Notify : 2897
fin : 100
fin : 100
Notify : 2898
 
I had to send 2899 notifications.

Voila,alors mon probleme c est que je ne comprends pas pourquoi il faut 2899 notify (parfois + ou moins ce n est jamais fixe) afin de debloquer 200 wait(2 thread avec 100 wait chacun) ...Je pensais que lorsqu on faisait wait a un thread il suffisait d 1 seul notify afin de le debloquer.....
Je pense que je n ai pas trop bien compris le synchronised....

Si quelqu un arrive a m eclairer sur ca serait super sympa!!!
merci!!!