Repository navigation
Expand file tree
/
Copy pathRun16_volatile.java
More file actions
232 lines (226 loc) · 2.7 KB
/
Copy pathRun16_volatile.java
File metadata and controls
232 lines (226 loc) · 2.7 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
package com.brianway.learning.java.multithread.synchronize.example16;
/**
* Created by Brian on 2016/4/13.
*/
/**
* P124
* volatile非原子的特性
*/
public class Run16_volatile {
public static void main(String[] args) {
MyThread[] myThreads = new MyThread[100];
for (int i = 0; i < 100; i++) {
myThreads[i] = new MyThread();
}
for (int i = 0; i < 100; i++) {
myThreads[i].start();
}
}
}
/*
addCount不加synchronized
输出:
count=200
count=200
count=300
count=400
count=500
count=600
count=700
count=800
count=900
count=1000
count=1100
count=1200
count=1300
count=1400
count=1500
count=1600
count=1700
count=1800
count=1900
count=2000
count=2100
count=2200
count=2300
count=2400
count=2500
count=2600
count=2700
count=2800
count=2900
count=3000
count=3100
count=3200
count=3300
count=3400
count=3500
count=3600
count=3700
count=3800
count=3900
count=4000
count=4100
count=4200
count=4300
count=4400
count=4500
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9456
count=9556
count=9456
count=9656
count=9756
count=9756
count=9756
count=9856
count=9456
count=9456
count=9456
count=9456
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9756
count=9756
count=9656
count=9556
count=9556
count=9956
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
count=9856
-----------------------------
addCount()加synchronized
输出:
count=100
count=200
count=300
count=400
count=500
count=600
count=700
count=800
count=900
count=1000
count=1100
count=1200
count=1300
count=1400
count=1500
count=1600
count=1700
count=1800
count=1900
count=2000
count=2100
count=2200
count=2300
count=2400
count=2500
count=2600
count=2700
count=2800
count=2900
count=3000
count=3100
count=3200
count=3300
count=3400
count=3500
count=3600
count=3700
count=3800
count=3900
count=4000
count=4100
count=4200
count=4300
count=4400
count=4500
count=4600
count=4700
count=4800
count=4900
count=5000
count=5100
count=5200
count=5300
count=5400
count=5500
count=5600
count=5700
count=5800
count=5900
count=6000
count=6100
count=6200
count=6300
count=6400
count=6500
count=6600
count=6700
count=6800
count=6900
count=7000
count=7100
count=7200
count=7300
count=7400
count=7500
count=7600
count=7700
count=7800
count=7900
count=8000
count=8100
count=8200
count=8300
count=8400
count=8500
count=8600
count=8700
count=8800
count=8900
count=9000
count=9100
count=9200
count=9300
count=9400
count=9500
count=9600
count=9700
count=9800
count=9900
count=10000
*/