[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12436] Re: SharedCounter の実験 (1) - 再送



高橋(徹)です。

智弘さん:
>  同じ環境 CPU(AMD Opteron) x 2, WindowsXP(x64 Edition), J2SE 5.0 Update6(ServerVM) で
>以下のように書き換えたものを実行してみたのですが、やはり終了しません。t1.join(); が戻って
>来ません。
:[コード略]

村山さんとの議論から、智弘さんが書き換えたコード(スレッド間で共有する
変数を削除)では、HotSpotコンパイラが最適化してrun()が終了しなくなる
と思われます。

Threadクラスのinterrupt()、isInterrupted()が可視性の保証をしているのか
検討してみたいと思っています(今回の最適化の動きからすると、保証しなくて
もよいものかもしれません)。
Java Memory Modelも含めて理解をしないと何が正解か追いきれないのですが・・・。
#今回の課題図書でJMMについて触れている章があったかと思うので、そのとき
#じっくりと

SharedCounterIncrementorにスレッド停止フラグを設けて停止の制御を
した方がよかったかもしれません。