■27069 / ) |
Re[6]: インクリメントの結果が違ってしまいます |
□投稿者/ 凪瀬 (81回)-(2008/10/27(Mon) 12:30:28)
|
■No27036 (naga さん) に返信 > for (int i=0;i < 20;i++) { > t.iCnt1 = t.iCnt1 + 1; > t.iCnt2 += 1; > t.iCnt3++; > System.out.println("iCnt1=" + t.iCnt1 + " iCnt2=" + t.iCnt2 + " iCnt3=" + t.iCnt3); > } > > この状態で実行すると、t.iCnt1 = t.iCnt1 + 1; の部分だけ+2されたり、+1されたりします。。。
当方で該当コードを動かしてみましたが、そのような現象は確認できませんでした。 Sun製のJRE1.6.0でWindows Vista上で確認。
最適化関連でバイトコードのオーダ変更が変な形でされているとか、あるいは該当JREのバグか。並列系だと同期関連バグなんじゃないの、というところですが…。いかんせん、言語仕様的な理由ではないでしょうね。
|
|