Класс 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 |
Добавляет заданное значение. |
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() |
|
String |
toString() |
Возвращает строковое представление sum(). |
Методы, объявленные в классе java.lang.Number
byteValue, shortValue
Подробное описание конструкторов
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
longValue
intValue
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