Spec-Zone.ru › OpenJDK 8

Класс 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(k -> new LongAdder()).increment();

Этот класс расширяет Number, но не определяет методы, такие как equals, hashCode и compareTo, так как предполагается, что экземпляры будут изменяться, поэтому они не являются полезными ключами коллекций.

С:
1.8
См. также:
Сериализованная форма

Конструкторы

Конструктор и описание
LongAdder()

Создает новый объект 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()

Создает новый объект 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()

Сбрасывает переменные, поддерживающие сумму, в ноль. Этот метод может быть полезной альтернативой созданию нового объекта LongAdder, но эффективен только в том случае, если нет конкурентных обновлений. Поскольку этот метод по своей природе является конкурентным, его следует использовать только в том случае, если известно, что никакие потоки не обновляют его одновременно.

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, 2020, 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.

Spec-Zone.ru

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