同時機構の下層実現原理‐volatile,synchronized,CAS原子操作
volatile,synchronized,CAS原子操作定義と原理
Volatileの定義と実現原理
定義:
java volatile , .
げんり
volatile ?
volatileで修飾された変数は、JITで生成されたアセンブリ言語で、この変数の書き込み操作にlock接頭辞の命令を加え、マルチコアプロセッサの下で2つのことを引き起こす.
java volatile , .
volatile ?
以上の2ステップを要するのは、CPUが直接メモリを操作するのではなく、内部のキャッシュを操作しているため、内部のキャッシュが処理された後、いつメモリに戻るか分からないため、メモリをタイムリーに書き込み、可視性を保証する必要があるからです.その後、各プロセッサは、バス上で伝播したデータを嗅ぐことで、自分のキャッシュの値が期限切れであるかどうかを確認し、期限切れである場合は失効状態に設定し、次回この値を使用する必要がある場合は、メモリから内部キャッシュにロードする必要があります.
synchronizedの定義と実現原理,ロックの記憶構造
定義:
,
原理:
synchronizedによるロック同期の基礎としてjava内の任意のオブジェクトをロックとして表現するには、次の3つの形式があります.
,
JVMは、Monitorオブジェクトへのアクセスと終了に基づいて方法同期とコード同期を実現する、monitorrenterとmonitorexit命令を用いて、いずれのオブジェクトにも1つのMonitorが関連付けられていることを実現し、1つのMonitorが保持すると、そのオブジェクトはロック状態になる.モニタrenter命令が実行すると、パラメータはオブジェクトに対応するモニタの所有権を取得する.
JAvaオブジェクトのオブジェクトヘッダにロックが格納されている構造で、最新のjavaではロックの重大度を4つに分けています.
, ,
CAS , , , CPU
, CPU, ,
CAS
定義:
CAS(compare and swap)操作では、2つの値、古い値、新しい値を入力する必要があります.操作中に古い値が変化しているかどうかを比較し、変化がなければ新しい値を交換し、変化があれば交換しないjava CAS
CASが原子操作を実現する三大問題:
java CAS