Spec-Zone.ru › OpenJDK 24

Класс 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, так как экземпляры ожидаются для мутации, и поэтому не являются полезными в качестве ключей коллекции.

С:
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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html

Spec-Zone.ru

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