Friday, October 10, 2025
HomeLanguagesJavaAtomicReferenceArray getAndAccumulate() method in Java with Examples

AtomicReferenceArray getAndAccumulate() method in Java with Examples

The getAndAccumulate() method of a AtomicReferenceArray class is used to atomically updates the element at index i of AtomicReferenceArray with the results of applying the given accumulatorFunction to the current and given values and returns the previous value. The accumulatorFunction should be side-effect-free, since it may be re-applied when attempted updates fail due to contention among threads. The function is applied with the current value at index i as its first argument, and the given update as the second argument.

Syntax:

public final E getAndAccumulate(int i, E x,
     BinaryOperator<E> accumulatorFunction)

Parameters: This method accepts:

  • i which is an index of AtomicReferenceArray to perform the operation accepts,
  • x which is the updated value and
  • accumulatorFunction which is a side-effect-free function of two arguments.

Return value: This method returns the previous value.

Below programs illustrate the getAndAccumulate() method:
Program 1:




// Java program to demonstrate
// getAndAccumulate() method
  
import java.util.concurrent.atomic.*;
import java.util.function.BinaryOperator;
  
public class GFG {
    public static void main(String args[])
    {
        // an array
        Integer a[]
            = { 123, 1232, 1433, 134, 13415, 1343 };
  
        // AtomicReferenceArray with array
        AtomicReferenceArray<Integer> array
            = new AtomicReferenceArray<>(a);
  
        // Print AtomicReferenceArray
        System.out.println(
            "The AtomicReferenceArray before update: "
            + array);
  
        // Index and Value to apply getAndAccumulate
        int index = 2;
        int E = 3;
  
        // Declaring the accumulatorFunction
        // applying function
        BinaryOperator add
            = (u, v)
            -> Integer.parseInt(
                   u.toString())
                   * Integer
                         .parseInt(
                             v.toString());
  
        // apply getAndAccumulate()
        int value
            = array.getAndAccumulate(index, E, add);
  
        // print AtomicReferenceArray
        System.out.println(
            "previous value of index 2:"
            + value);
        System.out.println(
            "The AtomicReferenceArray after update: "
            + array);
    }
}


Output:

Program 2:




// Java program to demonstrate
// getAndAccumulate() method
  
import java.util.concurrent.atomic.*;
import java.util.function.BinaryOperator;
  
public class GFG {
    public static void main(String args[])
    {
        // an array
        String a[] = { "GFG", "JS" };
  
        // AtomicReferenceArray with array
        AtomicReferenceArray<String> array
            = new AtomicReferenceArray<>(a);
  
        // Print AtomicReferenceArray
        System.out.println(
            "The AtomicReferenceArray before update : "
            + array);
  
        // Index and Value to apply getAndAccumulate
        int index = 1;
        String E = " PYTHON";
  
        // Declaring the accumulatorFunction
        // applying function to add value as string
        BinaryOperator add
            = (u, v) -> u.toString() + " and " + v.toString();
  
        // apply getAndAccumulate()
        String value
            = array.getAndAccumulate(index, E, add);
  
        // print AtomicReferenceArray
        System.out.println(
            "previous value of index 1:"
            + value);
        System.out.println(
            "The AtomicReferenceArray after update: "
            + array);
    }
}


Output:

References: https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/atomic/AtomicReferenceArray.html#getAndAccumulate(int, E, java.util.function.BinaryOperator)

RELATED ARTICLES

Most Popular

Dominic
32350 POSTS0 COMMENTS
Milvus
87 POSTS0 COMMENTS
Nango Kala
6718 POSTS0 COMMENTS
Nicole Veronica
11880 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11941 POSTS0 COMMENTS
Shaida Kate Naidoo
6838 POSTS0 COMMENTS
Ted Musemwa
7101 POSTS0 COMMENTS
Thapelo Manthata
6794 POSTS0 COMMENTS
Umr Jansen
6794 POSTS0 COMMENTS