- - PR -
staticメソッドの同時実行でメモリが破壊される?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-03 14:06
私の読解力がないのかもしれませんが、何が現に起きている問題なのか 書かれていないように思うのですが気のせいでしょうか?下記の現象とは? 当初の質問に対しては、 1.staticの値をマルチスレッド下で変更する際に 特異な値を取る可能性は一応ある。 例えば、Javaの言語仕様上、double値の代入などで上位32bitと下位32bitが 混在した値になる可能性はあるとはよく言われるが、実際のJavaVMの実装で それが起きうる実装は寡聞にして聞いたことがない。 2.staticフィールドの初期化は継承階層で巡回している場合に、 正しく行われないことがある。 相互依存関係を持つクラスの初期化は注意して行わなければならない。 というか、相互依存にしないことが望ましい。 といったところですが、汎用的な質問に対しては汎用的にしか答えられません。 ソースコードも抜粋だし、具体的な再現コードではないですし…。 (2.に関して突っ込んだ説明をするのも大変なのですよ) 「予期しない動作になりますか?」という質問に対しては非常に答えにくい。 ケースバイケースなので安直に白黒つけることができない。 そんなに簡単なら誰もマルチスレッドで悩みはしませんよ… 遠回りに思えるかもしれませんが、マルチスレッドでの問題については 書籍を読むなどして理解を深めることが一番の近道だと思います。 |