Spec-Zone.ru › OpenJDK 25

Класс DoubleAdder

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.DoubleAdder
Все реализованные интерфейсы:
Serializable
public class DoubleAdder extends Number implements Serializable
Одна или несколько переменных, которые совместно хранят изначально равную нулю сумму double. Если при обновлениях (метод add(double)) между потоками возникают конфликты, набор переменных может динамически увеличиваться, чтобы уменьшить конкуренцию. Метод sum() (или, что эквивалентно, doubleValue()) возвращает текущую общую сумму значений переменных, хранящих сумму. Порядок накопления значений внутри потоков или между потоками не гарантируется. Поэтому этот класс может не подходить, если требуется численная устойчивость, особенно при объединении значений, порядки величин которых существенно различаются.

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

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

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

Краткое описание конструкторов

Конструктор Описание
DoubleAdder()
Создает новый сумматор с начальной суммой, равной нулю.

Краткое описание методов

Модификатор и тип Метод Описание
void add(double x)
Добавляет заданное значение.
double doubleValue()
Эквивалентен sum().
float floatValue()
Возвращает sum() как float после сужающего преобразования примитивного типа.
int intValue()
Возвращает sum() как int после сужающего преобразования примитивного типа.
long longValue()
Возвращает sum() как long после сужающего преобразования примитивного типа.
void reset()
Обнуляет переменные, хранящие сумму.
double sum()
Возвращает текущую сумму.
double sumThenReset()
По эффекту эквивалентен вызову sum() с последующим вызовом reset().
String toString()
Возвращает строковое представление sum().

Методы, объявленные в классе Number

byteValue, shortValue

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

DoubleAdder

public DoubleAdder()
Создает новый сумматор с начальной суммой, равной нулю.

Подробное описание методов

add

public void add(double x)
Добавляет заданное значение.
Параметры:
x — значение для добавления

sum

public double sum()
Возвращает текущую сумму. Возвращаемое значение НЕ является атомарным снимком; вызов при отсутствии параллельных обновлений возвращает точный результат, однако параллельные обновления, происходящие во время вычисления суммы, могут не учитываться. Кроме того, поскольку арифметика с плавающей точкой не является строго ассоциативной, возвращаемый результат не обязательно совпадает со значением, которое было бы получено при последовательном выполнении обновлений одной переменной.
Возвращает:
сумму

reset

public void reset()
Обнуляет переменные, хранящие сумму. Этот метод может быть полезной альтернативой созданию нового сумматора, но эффективен только при отсутствии параллельных обновлений. Поскольку этот метод по своей сути подвержен гонкам, его следует использовать только при уверенности, что никакие потоки не выполняют обновления одновременно.

sumThenReset

public double sumThenReset()
По эффекту эквивалентен вызову sum() с последующим вызовом reset(). Этот метод может применяться, например, в точках покоя между многопоточными вычислениями. Если одновременно с этим методом выполняются обновления, возвращаемое значение не гарантируется как окончательное значение, существовавшее до обнуления.
Возвращает:
сумму

toString

public String toString()
Возвращает строковое представление sum().
Переопределяет:
toString в классе Object
Возвращает:
строковое представление sum()

doubleValue

public double doubleValue()
Эквивалентен sum().
Определено в:
doubleValue в классе Number
Возвращает:
сумму

longValue

public long longValue()
Возвращает sum() как long после сужающего преобразования примитивного типа.
Определено в:
longValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования к типу long.

intValue

public int intValue()
Возвращает sum() как int после сужающего преобразования примитивного типа.
Определено в:
intValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования к типу int.

floatValue

public float floatValue()
Возвращает sum() как float после сужающего преобразования примитивного типа.
Определено в:
floatValue в классе Number
Возвращает:
числовое значение, представленное этим объектом после преобразования к типу float.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/atomic/DoubleAdder.html

Spec-Zone.ru

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