Javaの並行処理。CASとロックの比較 [終了しました]
2023-09-06 23:21:58
質問
私は本を読んでいます Java並行処理の実践 . 第15章では、ノンブロッキングアルゴリズムと コンペア&スワップ (CAS)メソッドについてです。
CASはロック方式よりはるかに性能が良いと書かれています。 この2つの概念をすでに使っている人に聞きたいのですが、どのような場合にどちらの概念がいいのでしょうか?本当にそんなに速いのでしょうか?
私にとっては、ロックの使い方はより明確で理解しやすく、おそらく保守もしやすいと思います。 (私が間違っているならば訂正してください) . より良いパフォーマンスを得るために、ロックよりもCASに関連する同時実行コードを作成することに本当に集中するべきでしょうか、それとも持続可能性がより重要なのでしょうか?
いつ何を使うかという厳密なルールがないことは承知しています。 しかし、私はただCASの新しい概念についてのいくつかの意見、経験を聞きたいと思います。
どのように解決するのですか?
CASは一般にロックよりはるかに高速ですが、競合の程度に依存します。CAS は読み込みと比較の間に値が変わると再試行を強制することがあるため、問題の変数が他の多くのスレッドによって激しく叩かれている場合 (または古い値から新しい値を計算するのにコストがかかる場合 (またはその両方)) は、理論的にはスレッドがビジーウェイトに陥ることがあります。
CASの主な問題は、ロックよりも正しくプログラムすることがはるかに難しいということです。ロックは、メッセージパッシングや STM ロックはメッセージパッシングやよりも正しく使うのが難しいので、これをロックの使用を推奨しているわけではありません。
関連
-
Java の switch case 文で必要な定数式の問題の解決法
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 並行処理と並列処理の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
Jsoup-Crawlingの動作
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
SocketException java.netの4つの例外解決策。
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
Java基礎 - マッピングとQ/A
-
Zipファイルの圧縮・解凍にantを使用する