Comprehensive guide to working with DoubleAccumulator class.

If you are interviewing, consider buying our number#1 course for Java Multithreading Interviews.


The DoubleAccumulator class is similar to the DoubleAdder class, except that the DoubleAccumulator class allows for a function to be supplied that contains the logic for computing results for accumulation. In contrast to DoubleAdder, we can perform a variety of mathematical operations rather than just addition. The supplied function to a DoubleAccumulator is of type DoubleBinaryOperator. The class DoubleAccumulator extends from the class Number but doesn’t define the methods compareTo(), equals(), or hashCode() and instances of the class shouldn’t be used as keys in collections such as maps.

An example of creating an accumulator that simply adds double values presented to it appears below:

// function that will be supplied to an instance of DoubleAccumulator
DoubleBinaryOperator doubleBinaryOperator = new DoubleBinaryOperator() {
   public double applyAsDouble(double left, double right) {
       return left + right;

// instantiating an instance of DoubleAccumulator with an initial value of zero
DoubleAccumulator longAccumulator = new DoubleAccumulator(doubleBinaryOperator, 0);

Note that in the above example, we have supplied a function that simply adds the new double value presented to it. The method applyAsDouble has two operands left and right. The left operand is the current value of the DoubleAccumulator. In the above example, it’ll be zero initially, because that is what we are passing-in to the constructor of the DoubleAccumulator instance. The code widget below runs this example and prints the operands and the final sum.

Create a free account to view this lesson.

By signing up, you agree to Educative's Terms of Service and Privacy Policy