AtomicIntegerとMath.max

パブロマティアスゴメス

サイクルでcalculatedValueの最大値を取得しようとしていたので、スレッドセーフにしたかったのです。そこで、AtomicIntegerとMath.maxを使用することにしましたが、操作をアトミックと見なすための解決策が見つかりません。

AtomicInteger value = new AtomicInteger(0);


// Having some cycle here... {
    Integer anotherCalculatedValue = ...;
    value.set(Math.max(value.get(), anotherCalculatedValue));
}

return value.get()

それに関する問題は、私が2つの操作を行うため、スレッドセーフではないことです。どうすればこれを解決できますか?唯一の方法は使用することsynchronizedです?

ウィリアム・デラード

Java 8が利用可能な場合は、以下を使用できます。

AtomicInteger value = new AtomicInteger(0);
Integer anotherCalculatedValue = ...;
value.getAndAccumulate(anotherCalculatedValue, Math::max);

仕様からどれが:

指定された関数を現在の値と指定された値に適用した結果で現在の値を原子的に更新し、前の値を返します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Math.max() - if more elements are max?

分類Dev

JodaTimeのMath.max(...)

分類Dev

日付のMath.MinとMath.Maxに相当しますか?

分類Dev

ユーザー定義関数のmath.maxとmath.min

分類Dev

nvarchar(max)とNText

分類Dev

Math.max()と同様のfindMax()関数の作成

分類Dev

max() と min() の Python

分類Dev

AtomicInteger.incrementAndGet()と AtomicInteger.getAndIncrement()

分類Dev

AtomicIntegerと比較操作

分類Dev

AtomicInteger lazySetとset

分類Dev

AtomicIntegerArrayとAtomicInteger []

分類Dev

Math.max(... [])がES2015の-Infinityと等しいのはなぜですか?

分類Dev

Golang, math/big: what is the max value of *big.Int

分類Dev

Math.Eは0.99に等しい.... ^ max int

分類Dev

Inputting an array into Math.Max in Google Apps Scripts

分類Dev

Math.maxを使用したJavascriptArray.reduce

分類Dev

jQuery Math.max return NaN after pushing / creating array

分類Dev

式ツリー-Math.Maxの置換

分類Dev

CでのMINとMAX

分類Dev

CでのMINとMAX

分類Dev

CでのMINとMAX

分類Dev

Oracleのmax(rowid)とは

分類Dev

PowerBIのMAX関数とGroupBY

分類Dev

SQL:MAXとSELECT TOP 1

分類Dev

3ds Max と Python

分類Dev

JavascriptのBigInt型のMath.maxおよびMath.minの代替

分類Dev

Math.maxを使用してArray.prototype.mapを呼び出すと、NaNの配列が返されます

分類Dev

オブジェクトの配列にmath.maxを使用することは可能ですか?

分類Dev

javaの三項演算子はMath.max呼び出しに置き換えることができます