Класс DoubleAccumulator
- Все реализованные интерфейсы:
Serializable
public class DoubleAccumulator extends Number implements Serializable
double значение, обновляемое с помощью предоставленной функции. Когда обновления (метод accumulate(double)) конкурируют между потоками, набор переменных может динамически увеличиваться, чтобы уменьшить конкуренцию. Метод get() (или, что эквивалентно, doubleValue()) возвращает текущее значение по всем переменным, поддерживающим обновления. Этот класс обычно предпочтительнее альтернатив, когда несколько потоков обновляют общее значение, используемое для целей, таких как статистические сводки, которые часто обновляются, но реже читаются.
Предоставляемая функция аккумулятора должна быть свободной от побочных эффектов, поскольку она может быть повторно применена, когда попытки обновлений терпят неудачу из-за конкуренции между потоками. Для предсказуемых результатов функция аккумулятора должна быть коммутативной и ассоциативной в пределах допустимой погрешности с плавающей точкой, необходимой в контекстах использования. Функция применяется к существующему значению (или тождеству) в качестве одного аргумента и заданному обновлению в качестве другого аргумента. Например, для поддержания текущего максимального значения можно предоставить Double::max вместе с Double.NEGATIVE_INFINITY в качестве тождества. Порядок накопления внутри или между потоками не гарантируется. Таким образом, этот класс может быть неприменим, если требуется числовая устойчивость, особенно при объединении значений с существенно разными порядками величины.
Класс DoubleAdder предоставляет аналоги функциональности этого класса для общего частного случая поддержания сумм. Вызов new DoubleAdder() эквивалентен new
DoubleAccumulator((x, y) -> x + y, 0.0).
Этот класс расширяет Number, но не определяет методы, такие как equals, hashCode и
compareTo, потому что ожидается, что экземпляры будут изменены, и поэтому они не подходят в качестве ключей коллекций.
- С момента:
- 1.8
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DoubleAccumulator |
Создает новый экземпляр с использованием заданной функции аккумулятора и элемента тождества. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
accumulate |
Обновляет значением. |
double |
doubleValue() |
Эквивалентно get(). |
float |
floatValue() |
Возвращает текущее значение как float после преобразования в примитивный тип. |
double |
get() |
Возвращает текущее значение. |
double |
getThenReset() |
|
int |
intValue() |
Возвращает текущее значение как int после преобразования в примитивный тип. |
long |
longValue() |
Возвращает текущее значение как long после преобразования в примитивный тип. |
void |
reset() |
Сбрасывает переменные, поддерживающие обновления до значения тождества. |
String |
toString() |
Возвращает строковое представление текущего значения. |
Методы, объявленные в классе java.lang.Number
byteValue, shortValue
Подробное описание конструкторов
DoubleAccumulator
public DoubleAccumulator(DoubleBinaryOperator accumulatorFunction, double identity)
- Параметры:
-
accumulatorFunction- функция без побочных эффектов от двух аргументов -
identity- тождество (начальное значение) для функции аккумулятора
Подробное описание методов
accumulate
public void accumulate(double x)
- Параметры:
-
x- значение
get
public double get()
- Возвращает:
- текущее значение
reset
public void reset()
getThenReset
public double getThenReset()
get(), после чего reset(). Этот метод может быть применим, например, во время точек покоя между многопоточными вычислениями. Если обновления происходят одновременно с этим методом, возвращаемое значение не гарантируется как последнее значение, имевшее место перед сбросом.- Возвращает:
- значение до сброса
toString
public String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление текущего значения
doubleValue
public double doubleValue()
get().- Определено в:
-
doubleValueв классеNumber - Возвращает:
- текущее значение
longValue
public long longValue()
long после преобразования в примитивный тип.- Определено в:
-
longValueв классеNumber - Возвращает:
- числовое значение, представленное этим объектом после преобразования в тип
long.
intValue
public int intValue()
int после преобразования в примитивный тип.- Определено в:
-
intValueв классеNumber - Возвращает:
- числовое значение, представленное этим объектом после преобразования в тип
int.
floatValue
public float floatValue()
float после преобразования в примитивный тип.- Определено в:
-
floatValueв классеNumber - Возвращает:
- числовое значение, представленное этим объектом после преобразования в тип
float.
© 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/DoubleAccumulator.html