Método AtomicInteger acumularAndGet() en Java con ejemplos

El método Java.AtomicInteger.accumulateAndGet() 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 actualizado.

Sintaxis: 

public final int accumulateAndGet(int y, 
             IntBinaryOperator function)

Parámetros: Este método acepta como parámetro un valor entero y y una función IntBinaryOperator . Aplica la función dada al valor actual del objeto y al valor y.

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

Ejemplo para demostrar la función. 

Java

// Java program to demonstrate
// AtomicInteger accumulateAndGet() 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(0);
}
 
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
                          .accumulateAndGet(value, ibo);
            System.out.println(name + " " + ans);
        }
    }
}
Producción: 

Thread A 5
Thread A 10
Thread A 15
Thread B 20
Thread B 25
Thread B 30

 

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 *