ホームページ > Java > &#&チュートリアル > Javaメモリモデルに関するおすすめ記事10選

Javaメモリモデルに関するおすすめ記事10選

伊谢尔伦
リリース: 2017-06-12 11:28:32
オリジナル
1658 人が閲覧しました

1. メモリ モデルの関連概念の分析と概要。Volatile キーワードの詳細な分析。2. メモリ モデルの関連概念。複数のスレッドによってアクセスされる変数は、通常、共有変数と呼ばれます。つまり、変数が複数の CPU にキャッシュされている場合 (通常はマルチスレッド プログラミングで発生します)、キャッシュの不整合の問題が発生する可能性があります。キャッシュの不整合の問題を解決するには、通常、バスに LOCK# を追加することと、キャッシュ整合性プロトコルを使用することの 2 つの解決策があります。これらの 2 つの方法は両方ともハードウェア レベルで提供されます。上記の方法 1 には、バスがロックされている間、他の CPU がメモリにアクセスできないため、効率が低下するという問題があります。キャッシュコヒーレンスプロトコル。最も有名なものは Intel の MESI プロトコルで、各キャッシュで使用される共有変数のコピーの一貫性が保証されます。その中心となるアイデアは、CPU がデータを書き込むときに、操作されている変数が共有変数であることが判明した場合、つまり、その変数のコピーが他の CPU にも存在する場合、他の CPU にその変数を設定するように通知する信号が送信されるというものです。変数のキャッシュ ラインを None にします

1. Java volatile キーワード実装のサンプル コードをルートから分析します (図)

Javaメモリモデルに関するおすすめ記事10選

はじめに: 1. 分析の概要 メモリ モデルの関連概念 3コンカレント プログラミングの概念 Java メモリ モデル volatile キーワードの詳細な分析 volatile キーワードを使用するシナリオ 2. メモリ モデルの概念に関連するキャッシュの整合性の問題。複数のスレッドによってアクセスされる変数は、通常、共有変数と呼ばれます。 つまり、変数が複数の CPU にキャッシュされている場合 (通常はマルチスレッド プログラミングで発生します)、キャッシュの不整合の問題が発生する可能性があります。 キャッシュの不整合の問題を解決するには、通常 2 つの解決策があります: バスに LOCK# を追加する

2. JMM Java メモリ モデルのグラフィックとテキストの説明

Javaメモリモデルに関するおすすめ記事10選

はじめに: Java を深く理解したいプログラマーにとって、JMM は避けられないレベルです。この記事はより理論的であり、間違いがある場合は修正していただければ幸いです。

3. Java String の概要 (パート 2)

Javaメモリモデルに関するおすすめ記事10選

はじめに: Java の String クラスは、私たちの日常の開発で最も頻繁に使用されるクラスですが、これを本当にマスターしたい場合は、授業というのは簡単なものではありません。 String クラスの真の全体像を復元するために、作成者はまず String クラスをレビューするために 2 つのブログ投稿に分割します。著者は Java メモリ モデルから開始し、JDK の String クラスのソース コードと組み合わせて、特に定数プール、不変性、String クラスのオブジェクト作成方法、String クラスとフライウェイト モードの関係、正規表現、クローン作成と 3 つの主要な文字列、カテゴリなどのいくつかの側面についての包括的かつ正確な説明。

4. Java String の概要 (パート 1)

Javaメモリモデルに関するおすすめ記事10選

はじめに: Java の String クラスは、私たちの日常の開発で最も頻繁に使用されるクラスですが、これを本当にマスターしたい場合は、授業というのは簡単なものではありません。 String クラスの真の全体像を復元するために、作成者はまず String クラスをレビューするために 2 つのブログ投稿に分割します。著者は Java メモリ モデルから開始し、JDK の String クラスのソース コードと組み合わせて、特に定数プール、不変性、String クラスのオブジェクト作成方法、String クラスとフライウェイト モードの関係、正規表現、クローン作成と 3 つの主要な文字列、カテゴリなどのいくつかの側面についての包括的かつ正確な説明。

5. Javaメモリモデルの詳細な紹介

Javaメモリモデルに関するおすすめ記事10選

はじめに: この Java メモリ モデルは、Java 仮想マシンがコンピュータ メモリ (RAM) でどのように動作するかを指定します。この Java 仮想マシンはコンピュータ全体のモデルであるため、このモデルには当然、Java メモリ モデルとも呼ばれるメモリ モデルが含まれます。並行プログラムを正しく設計するには、Java メモリ モデルを理解することが重要です。この Java メモリ モデルは、別のスレッドが他のスレッドによって書き込まれた共有変数の値をいつどのように確認できるか、また共有変数に同期的にアクセスする方法を指します。初期の Java メモリ モデルが不足しています

6. 【Dead Java Concurrency】-----Java メモリ モデル volatile の分析

Javaメモリモデルに関するおすすめ記事10選

はじめに: 前回のブログ【Dead Java Concurrency】 ] - volatile の実装原理の詳細な分析で、volatile の特性がすでに説明されています。 32 ビット Long、Double)、i++ などの複合演算を除く; JVM の最下層は、揮発性セマンティクスを実装するために「メモリ バリア」を使用します。

7。 -- ---Java メモリ モデルの並べ替え

Javaメモリモデルに関するおすすめ記事10選

はじめに: プログラムを実行するとき、パフォーマンスを向上させるために、プロセッサとコンパイラは命令を並べ替えることがよくありますが、それらは自由に並べ替えることはできません。次の 2 つの条件を満たす必要があります。 1. シングルスレッド環境ではプログラムの実行結果を変更できない。 2. データの依存関係がある場合は並べ替えが許可されない。 LZ の以前のブログでは、実際、これら 2 つの点は 1 つのことに起因していることがわかります。それは、事前発生原理では推定できないこと、および JMM では任意の順序付けが可能であることです。 as-if-serial semantics as-if-se

8. 【Dead Java Concurrency】-----Java メモリ モデルは前に発生します

Javaメモリモデルに関するおすすめ記事10選

はじめに: このブログ内post ([Fuck Java Concurrency] - volatile の実装原理の詳細な分析) LZ は、スレッドのローカル メモリとメイン メモリの存在と並べ替えにより、マルチスレッド環境では可視性の問題が発生すると述べました。 。それでは、同期とロックを正しく使用した場合、スレッド A が変更した変数 a がスレッド B に見えるようになるのはいつでしょうか?スレッドによって変更された変数が他のスレッドに表示されるかどうかをすべてのシナリオで規定することはできませんが、このルールは JDK 5 以降、ha

9 を使用します。 Java メモリ モデルとガベージ コレクションの概要

Javaメモリモデルに関するおすすめ記事10選

はじめに: 以下のエディターは、Java メモリ モデルとガベージ コレクションの簡単な分析を提供します。編集者がとても良いと思ったので、参考として共有したいと思います。エディターと一緒に見に来てください。皆さんのゲームの成功を祈っています

10. Java メモリ モデルの詳細な分析: 基本部分

Javaメモリモデルに関するおすすめ記事10選 はじめに: 並行プログラミングでは、スレッド間で通信する方法とスレッド間で同期する方法という 2 つの重要な問題に対処する必要があります (ここでのスレッドとは、同時に実行されるアクティブなエンティティを指します)。通信とは、スレッドが情報を交換するメカニズムを指します。命令型プログラミングでは、スレッド間に共有メモリとメッセージ パッシングという 2 つの通信メカニズムがあります。

【関連するQ&Aの推奨事項】:

Javaメモリモデルの意味論的順序の問題の前に起こる

マルチスレッド - Javaメモリの可視性に関する問題

以上がJavaメモリモデルに関するおすすめ記事10選の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート