AtomicInteger クラスのいくつかのメソッドの要点を理解するのを手伝ってくれませんか: updateAndGet
, accumulateAndGet
.
なぜ最初のものIntUnaryOperator
はパラメータとして受け取るのですか? このインターフェースの関数メソッドに適用できる可能性のあるロジックは何ですか? int
私の考えでは、単純な価値だけを受け取りやすいでしょう。IntBinaryOperator
(インターフェースと同じ)。
前もって感謝します。
AtomicInteger クラスのいくつかのメソッドの要点を理解するのを手伝ってくれませんか: updateAndGet
, accumulateAndGet
.
なぜ最初のものIntUnaryOperator
はパラメータとして受け取るのですか? このインターフェースの関数メソッドに適用できる可能性のあるロジックは何ですか? int
私の考えでは、単純な価値だけを受け取りやすいでしょう。IntBinaryOperator
(インターフェースと同じ)。
前もって感謝します。
に格納されている値をアトミックに 2 倍にしたい場合、AtomicInteger
Java 8 が作成される前に実行できた最善の方法は
while (true) {
int x = ai.get();
if (ai.compareAndSet(x, 2 * x)) {
return 2 * x;
}
}
...しかし、Java 8ではたとえば書くことができます
ai.updateAndGet(x -> 2 * x);
...そして、たとえば、アトミックにをaccumulateAndGet
掛けることができai
ますy
ai.accumulateAndGet(y, (x, y) -> x * y);
...これも実装できupdateAndGet
ますが、すでに 2 つの引数の操作がある場合は、より簡単に使用できる場合があります。