Spec-Zone.ru › OpenJDK 21

Класс 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, 2023, 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/21/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html

Spec-Zone.ru

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