説明の用語との競争あまりに:(クリティカル領域の条件が同じリソースへのマルチスレッドアクセス)実際には 、これらのリソースに書き込まれている複数のスレッドが同じリソースにアクセスし、実行順序を要求しました。上の競合状態が発生することがあります。 クリティカルセクション:コードの一部、マルチスレッド実行の場合には、結果が影響を与える場合。そして、このコードは重要な領域です。 レース条件:それは、マルチスレッド環境の競争共有リソースの場合を指します。 アトミック操作: アトミックオペレーションはステップまたは複数のステップが、実行の順序は、切断は、部分的に行うことができない、邪魔することはできません。(無停電)全体の動作が原子とみなされるようになっています。 重要なゾーンは、アトミック操作に変換されます。保証スレッドセーフ。 CASメカニズム: これは原子性を達成するための基本的なメカニズムです。 比較とスワップの比較とスワップは、ハードウェアのプリミティブ、プロセッサによって提供される基本的なアトミックメモリ操作 CAS操作は、2つのパラメータ(古い値と新しい値)が必要です。古い値をして、新しい更新された値を比較します。 変更が発生した場合かどうかは、動作時に古い値に変更します。別のスレッドがすでに新しい値を書いてはいけません、その変形例を説明しました。 変更されていない場合は、次の説明は、この値は変更されません、あなたは新しい値を書き込むことができます。 JUCパッケージラッパークラスは、原子提供:(実際に使用)CASメカニズムが実装さ AtomicBooleanを:ブール型のアトミック更新 のAtomicInteger:アトミック更新整数 AtomicLong:ロングアトミック更新は 、参照配列が更新、更新のフィールドを更新します。 jdk1.8には更新日:効率化カウンタを提供します。、高効率のマルチスレッド頻繁な更新のためのシーンが、頻繁に読んでいません。 カウンター:DoubleAdder、LongAdder アップデータ:DoubleAccumulator、LongAccumulator。(カウンタのバージョン、追加された列に加えて、カスタマイズされた計算を実行することができる強化) 、例えば、整数増分を実装: のAtomicInteger Iの = 新しい新規のAtomicInteger(0に); 公共 ボイド追加(){ // Unsafe.classを使用して基礎となるクラス達成。このクラスは、直接メモリを操作することができます。CAS機構は、このようにアトミック性を保証する、実施しました。安全でない可能性のプラットフォーム、および安全ではありません。 i.incrementAndGet(); } CASの欠点: 1:+サイクルCASは、高周波数で実行中のスレッド、リソースの無駄である 2:単一の変数のために、データは、同時に複数の原子を制御することはできません。