2017-02-21 7 views
0

"long型変数とdouble型変数の読み込み/書き込み"は非アトミックになることが知られています。これは、静的および非静的なフィールドおよび配列に関係します。Javaのlongおよびdoubleローカル変数の読み取りと書き込み

対応するlong/doubleローカル変数はどうでしょうか?彼らは原子でもなくてもかまいません。

+1

ローカル変数は複数のスレッドにわたって共有されません。 –

+0

ローカルの場合、なぜアトミック性を気にしますか?ローカル変数は他のスレッドからアクセスできません。 – sparik

+0

一般的には、longとdoubleへの書き込みの読み込みはアトミックではないため、問題が発生します。 1つのスレッドだけがアクセスするローカル変数を使用する場合は、問題ではありません。たぶん重複:http://stackoverflow.com/questions/517532/writing-long-and-double-is-not-atomic-in-java – Supahupe

答えて

1

プリミティブ値は、ローカル変数として表示される場合、ヒープには決して格納されません。つまり、スタックに格納され、他のスレッドからアクセスできないため、共有することはできません。このスレッド内からは、順次整合性が保証されます。つまり、最後に割り当てられた値が常に表示されます。

関連する問題