努力の意味は、将来、自分の好きな人やものだけを見るようになるということです!
問題やプルリクエストは大歓迎です。すべてのドキュメントは私がコーディングしたものです。良いと思われる場合は、励ましとサポートのためにスターを付けていただけます。
この一連の記事はすべてJava の同時実行性に関するものであり、第 2 に、この部分は実際には非常に理解しにくいものです。また、面接の際にもよく質問されます。そこで、学習の過程で Java 同時実行に関する基本的な知識を記録しました。まず、自分の知識の体系を確立することができ、他の人にも役立つことを願っています。
Java 同時実行性のトピックについて:
(1) 同時実行性の基本的な知識が含まれており、各タイトルは特定の記事にリンクしています。
(2) 秋採用の面接の質問を掲載しています。理解することで得られるものもあります (皆さんもぜひお気に入りの仕事を見つけてください:) )
(3) 読んでいる間、役に立った場合は、高く評価してください。これは、コーディングを続けるための励みになります。
注: 転載する場合は、出典を明記してください。よろしくお願いします。
基礎知識
1.1 同時プログラミングの長所と短所
知識ポイント: (1) なぜ同時実行性を使用するのですか? (利点); (2) 同時プログラミングの欠点; (3) 複雑な概念。
1.2 スレッドの状態と基本操作
知識ポイント: (1) 新しいスレッドの作成方法、(2) スレッドの基本操作、(4) デーモン スレッド。
同時実行理論 (JMM)
Java メモリ モデルと前発生ルール
知識ポイント: (1) JMM メモリ構造、(2) 順序変更、(3) 前発生ルール。
同時実行キーワード
3.1 Synchronized を完全に理解する
知識ポイント: (1) 同期の使用方法、(2) 同期前関係、(5) ロックの最適化、(6)
3.2 揮発性を完全に理解する
知識ポイント: (1) 実装原理、(2) 前発生関係の導出、(4) メモリ セマンティクスの実装。
3.3 あなたはfinalを本当に理解していると思いますか?
知識ポイント: (1) 使用方法、(2) 最終的な並べ替え規則、(3) 最終的な実装の原則、(4) 最終的な参照はコンストラクターから「オーバーフロー」できません。
3.4 3 つの主要な特性の要約: 原子性、秩序性、可視性
知識ポイント: (1) 原子性: 同期化; (2) 可視性: 同期化、揮発性; (3) 秩序性: 同期化、揮発性。
ロックシステム
4.1 Lock および AbstractQueuedSynchronizer (AQS) の最初の概要
知識ポイント: (1) ロックと同期の比較、(2) AQS の設計意図、(4) AQS が提供するオーバーライド可能なメソッド。
4.2 AbstractQueuedSynchronizer (AQS) の深い理解
知識ポイント: (1) AQS 同期キューのデータ構造 (2) 排他ロック、(3) 共有ロック。
4.3 ReentrantLock をもう一度理解する
知識のポイント: (1) リエントラント ロックの実装原理、(2) フェア ロックの実装原理、(4) フェア ロックとアンフェア ロックの比較。
4.4 読み取り/書き込みロックの深い理解 ReentrantReadWriteLock
知識ポイント: (1) 読み取りおよび書き込みステータスの表現方法、(2) WriteLock の取得と解放、(4) ロックの低下戦略、(6)アプリケーションシナリオ
4.5 Condition の await およびシグナル待機/通知メカニズムの詳細な説明
知識ポイント: (1) オブジェクトの wait/notify メカニズムとの比較、(2) オブジェクトの wait/notify に対応するメソッド、(4) Await の実装原理、(5) 6) await と signal/signalAll の組み合わせ。
4.6 ロックサポートツール
知識ポイント:(1)主な機能、(2)同期ブロッキングウェイクアップと比較した特徴。
同時コンテナ
5.1 同時実行コンテナ ConcurrentHashMap (JDK バージョン 1.8)
知識ポイント: (1) 主要な属性、(3) 関連する CAS 操作、(5) 実行プロセス、(7) 8) サイズをカウントするメソッドの実行プロセス; (9) バージョン 1.8 ConcurrentHashMap と以前のバージョンの比較
5.2 並行コンテナの CopyOnWriteArrayList
知識ポイント: (1) 実装原理、(2) COW と ReentrantReadWriteLock の違い、(4) 一貫性が弱い理由、(5) COW の欠点。
5.3 コンカレントコンテナのConcurrentLinkedQueue
知識ポイント: (1) 実装原理、(3) コアメソッド、(4) HOPS 遅延更新の設計意図。
5.4 並行コンテナのThreadLocal
知識ポイント: (1) 実装の原則、(2) メソッドの原則を取得、(5) メソッドの原則。
ThreadLocal のメモリ リーク問題をソース コードから詳しく説明した記事。
知識ポイント: (1) ThreadLocal のメモリ リークの原理、(2) ThreadLocal のベスト プラクティス、(3) アプリケーション シナリオ。
5.5 同時実行コンテナの BlockingQueue
知識ポイント: (1) BlockingQueue の基本操作 (2) 一般的に使用される BlockingQueue。
同時コンテナでの ArrayBlockingQueue と LinkedBlockingQueue の実装原則の詳細な説明
スレッドプール (Executor システム)
6.1 スレッドプールの実装原理
知識ポイント: (1) スレッド プールを使用する理由(2) 実行プロセス、(3) コンストラクターの各パラメーターの意味、(4) スレッド プールの閉じ方、(5) スレッド プールの構成方法。
6.2 スレッドプールのScheduledThreadPoolExecutor
知識ポイント: (1) クラス構造、(3) ScheduledFutureTask、(3) DelayedWorkQueue。
6.3 FutureTaskの基本操作の概要
知識ポイント: (1) FutureTask のいくつかの状態、(3) cancel メソッド、(5) Runnable インターフェイスの実装。
アトミック操作クラス
7.1 Java のアトミックパッケージ内のアトミック操作クラスの概要
知識ポイント: (1) 実装原理、(3) アトミック更新配列タイプ、(5) アトミック更新フィールド タイプ。
同時実行ツール
8.1 平たく言えば、Java 同時実行ツールのクラス - CountDownLatch、CyclicBarrier
知識ポイント: (1) CountDownLatch、(2) CyclicBarrier、CountDownLatch と CyclicBarrier の比較。
8.2 各国語の Java 同時実行ツール クラス - セマフォ、エクスチェンジャー
知識ポイント: (1) リソース アクセス制御セマフォ (2) データ交換エクスチェンジャー
同時実行の実践
9.1 生産者と消費者の問題がよくわかる記事
JAVA同時実行性ナレッジグラフ
新しいウィンドウに移動して拡大して見やすくしたり、元の画像を表示したりできます。
ナレッジ グラフの元のイメージへのリンク。役立つ場合は、自分用に複製できます。