Класс 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(). |
Методы, объявленные в классе Number
byteValue, shortValue | Модификатор и тип | Метод | Описание |
|---|---|---|
byte |
byteValue() |
Возвращает значение указанного числа как byte. |
short |
shortValue() |
Возвращает значение указанного числа как short. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до тех пор, пока он не будет пробужден, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать до тех пор, пока он не будет пробужден, обычно посредством уведомления или прерывания, либо пока не пройдет заданное количество реального времени. |
final void |
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
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.