Método AtomicInteger getAndAccumulate() en Java con ejemplos

El método Java.AtomicInteger.getAndAccumulate() es un método incorporado que actualiza el valor actual del objeto aplicando la operación especificada en el valor actual y el valor pasado como parámetro. Toma un entero como su parámetro y un objeto de la interfaz IntBinaryOperator y aplica la operación especificada en el objeto a los valores. Devuelve el valor anterior.

Sintaxis:

public final int getAndAccumulate(int y, 
                   IntBinaryOperator function)

Parámetros: Este método acepta dos parámetros:

  • y : un número entero sobre el que se va a aplicar la función.
  • función: función aplicada al valor actual del objeto y al valor y.

Valor devuelto: la función devuelve el valor anterior del objeto actual.

Ejemplo para demostrar la función.

// Java program to demonstrate
// working of getAndAccumulate() method
  
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntBinaryOperator;
  
public class Demo {
    public static void main(String[] args)
    {
        new UserThread("Thread A");
        new UserThread("Thread B");
    }
}
  
class Shared {
    static AtomicInteger ai
        = new AtomicInteger(1);
}
  
class UserThread implements Runnable {
    String name;
  
    UserThread(String name)
    {
        this.name = name;
        new Thread(this).start();
    }
  
    IntBinaryOperator ibo = (x, y) -> (x * y);
  
    int value = 5;
    @Override
    public void run()
    {
        for (int i = 0; i < 3; i++) {
  
            int ans
                = Shared.ai
                      .getAndAccumulate(value, ibo);
  
            System.out.println(name + " "
                               + ans);
        }
    }
}
Producción:

Thread A 1
Thread A 5
Thread A 25
Thread B 125
Thread B 625
Thread B 3125

Referencia: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html

Publicación traducida automáticamente

Artículo escrito por CharchitKapoor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *