AtomicInteger の decrementAndGet メソッドの紹介 (コード付き)
この記事では、AtomicInteger の decrementAndGet メソッドを紹介します (コード付き)。必要な方は参考にしていただければ幸いです。
unsafe.objectFieldOffset
unsafe.objectFieldOffset を呼び出して、オブジェクト内の値フィールドのオフセット (実際にはフィールドからオブジェクトの先頭までのオフセット) を取得します。このオフセットにより、フィールドをすばやく見つけることができます)
static { try { valueOffset = unsafe.objectFieldOffset(AtomicInteger.class.getDeclaredField("value")); } catch (Exception ex) { throw new Error(ex); } }
値を揮発性タイプとして定義して、複数のスレッドでの値の可視性を確保します
private volatile int value;
decrementAndGet
unsafe.getAndAddInt を呼び出します。パラメータは現在のオブジェクト、オフセット、操作値です。
/** * Atomically decrements by one the current value. * * @return the updated value */ public final int decrementAndGet() { //最后-1是由于getAndAddInt获取的值为交换前的值 return unsafe.getAndAddInt(this, valueOffset, -1) - 1; }
getAndAddInt
compareAndSwapInt を返して最新のメモリ値を取得します。 getIntVolatile
public final int getAndAddInt(Object var1, long var2, int var4) { int var5; do { var5 = this.getIntVolatile(var1, var2); } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4)); return var5; }
getIntVolatile
このメソッドには、現在のオブジェクトとオフセットという 2 つのパラメータが含まれており、メモリ アドレスが指す整数を取得し、揮発性セマンティクスをサポートします。
public native int getIntVolatile(Object var1, long var2);
compareAndSwapInt
メソッドには、現在のオブジェクト、オフセット、期待値、および現在のオブジェクトに対応するオフセットの値の 4 つのパラメーターが含まれています。期待値と同じである場合、現在のオブジェクトの値は新しい値に変更され、true を返します。それ以外の場合は false
public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);
以上がAtomicInteger の decrementAndGet メソッドの紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
