Spec-Zone.ru › OpenJDK 17

Класс LongAdder

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.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, так как ожидается, что экземпляры будут изменены, и поэтому они не являются полезными в качестве ключей коллекций.

Since:
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, 2021, 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/17/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API