回答編集履歴
1
誤った解答を訂正
test
CHANGED
@@ -249,3 +249,29 @@
|
|
249
249
|
|
250
250
|
|
251
251
|
詳しく調べてはいませんが、生成するスレッドの数が多すぎて、途中で死んでいるものがあるのかもしれません。
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
# 訂正
|
256
|
+
|
257
|
+
> ちなみに、変数countは、読み取り時も同期化する必要があります。
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
は誤り。
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
なぜなら、`CountDownLatch`クラスは以下を保証しているため。
|
266
|
+
|
267
|
+
> メモリー整合性効果:countDown() を呼び出す前のスレッド内のアクションは、別のスレッド内の対応する await() から正常に復帰したあとのアクションよりも happen-before です。
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
[https://docs.oracle.com/javase/jp/6/api/](https://docs.oracle.com/javase/jp/6/api/)
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
"happens-before"については、以下を参照。
|
276
|
+
|
277
|
+
[https://docs.oracle.com/javase/specs/jls/se6/html/memory.html#17.4.5](https://docs.oracle.com/javase/specs/jls/se6/html/memory.html#17.4.5)
|