Класс LongAdder

Все реализованные интерфейсы:
Serializable
public class LongAdder
extends Number
implements Serializable

Одна или несколько переменных, вместе поддерживающих начальную сумму, равную нулю. long. Когда обновления (метод add(long)) происходят в условиях конкуренции между потоками, набор переменных может динамически увеличиваться, чтобы уменьшить конкуренцию. Метод sum() (или, эквивалентно, longValue()) возвращает текущую общую сумму по всем переменным, поддерживающим сумму.

Этот класс обычно предпочтительнее AtomicLong, когда несколько потоков обновляют общую сумму, используемую для таких целей, как сбор статистики, а не для тонкого управления синхронизацией. При низкой конкуренции обновлений эти два класса имеют схожие характеристики. Однако при высокой конкуренции ожидаемая пропускная способность этого класса значительно выше, ценой большего потребления памяти.

LongAdder можно использовать с ConcurrentHashMap для поддержки масштабируемой карты частот (форма гистограммы или мультимножества). Например, чтобы добавить счётчик в ConcurrentHashMap<String,LongAdder> freqs, инициализируя его, если он ещё не существует, можно использовать freqs.computeIfAbsent(key, k -> new LongAdder()).increment();

Этот класс расширяет Number, но не определяет методы, такие как equals, hashCode и compareTo, потому что экземпляры предполагается изменять, и поэтому они не являются полезными в качестве ключей коллекции.

С тех пор:
1.8
См. также:
Сериализованная форма

Конструкторы

Конструктор Описание
LongAdder()

Создаёт новый аддер с начальной суммой, равной нулю.

Методы

Модификатор и тип Метод Описание
void add​(long x)

Добавляет заданное значение.

void decrement()

Эквивалентно add(-1).

double doubleValue()

Возвращает sum() в виде double после расширяющей примитивной конверсии.

float floatValue()

Возвращает sum() в виде float после расширяющей примитивной конверсии.

void increment()

Эквивалентно add(1).

int intValue()

Возвращает sum() в виде int после сужающей примитивной конверсии.

long longValue()

Эквивалентно sum().

void reset()

Сбрасывает переменные, поддерживающие сумму, в ноль.

long sum()

Возвращает текущую сумму.

long sumThenReset()

Эквивалентно по эффекту sum() в сочетании с reset().

String toString()

Возвращает строковое представление sum().

Методы, объявленные в классе java.lang.Number

byteValue, shortValue

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

LongAdder

public LongAdder()

Создаёт новый аддер с начальной суммой, равной нулю.

Подробное описание методов

add

public void add(long x)

Добавляет заданное значение.

Параметры:
x - значение для добавления

increment

public void increment()

Эквивалентно add(1).

decrement

public void decrement()

Эквивалентно add(-1).

sum

public long sum()

Возвращает текущую сумму. Возвращаемое значение не является атомным снимком; вызов в отсутствие конкурентных обновлений возвращает точный результат, но конкурентные обновления, произошедшие во время вычисления суммы, могут не быть учтены.

Возвращает:
сумма

reset

public void reset()

Сбрасывает переменные, поддерживающие сумму, в ноль. Этот метод может быть полезной альтернативой созданию нового аддера, но эффективен только если нет конкурентных обновлений. Поскольку этот метод по своей природе конкурентный, его следует использовать только в тех случаях, когда известно, что никакие потоки не обновляют сумму одновременно.

sumThenReset

public long sumThenReset()

Эквивалентно по эффекту sum() в сочетании с reset(). Этот метод может быть полезен, например, в точках покоя между многопоточными вычислениями. Если обновления происходят параллельно с этим методом, возвращаемое значение не гарантированно является окончательным значением, полученным перед сбросом.

Возвращает:
сумма

toString

public String toString()

Возвращает строковое представление sum().

Переопределяет:
toString в классе Object
Возвращает:
строковое представление sum()

longValue

public long longValue()

Эквивалентно sum().

Определено в:
longValue в классе Number
Возвращает:
сумма

intValue

public int intValue()

Возвращает sum() в виде int после сужающей примитивной конверсии.

Определено в:
intValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования в тип int.

floatValue

public float floatValue()

Возвращает sum() в виде float после расширяющей примитивной конверсии.

Определено в:
floatValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования в тип float.

doubleValue

public double doubleValue()

Возвращает sum() в виде double после расширяющей примитивной конверсии.

Определено в:
doubleValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования в тип double.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html

Spec-Zone .ru
спецификации, руководства, описания, API