java.util.concurrent.atomic.AtomicInteger.compareAndSet() es un método incorporado en java que establece el valor en el valor pasado en el parámetro si el valor actual es igual al valor esperado que también se pasa en el parámetro. La función devuelve un valor booleano que nos da una idea de si la actualización se realizó o no.
Sintaxis:
booleano público final compareAndSet(int expect, int val)
Parámetros: La función acepta dos parámetros obligatorios que se describen a continuación:
- expect: que especifica el valor que debe tener el objeto atómico.
- val: que especifica el valor que se actualizará si el entero atómico es igual al esperado.
Valor devuelto: la función devuelve un valor booleano, devuelve verdadero en caso de éxito, de lo contrario, devuelve falso.
El siguiente programa demuestra la función:
Programa 1:
// Java Program to demonstrates // the compareAndSet() function import java.util.concurrent.atomic.AtomicInteger; public class GFG { public static void main(String args[]) { // Initially value as 0 AtomicInteger val = new AtomicInteger(0); // Prints the updated value System.out.println("Previous value: " + val); // Checks if previous value was 0 // and then updates it boolean res = val.compareAndSet(0, 6); // Checks if the value was updated. if (res) System.out.println("The value was" + " updated and it is " + val); else System.out.println("The value was " + "not updated"); } }
Previous value: 0 The value was updated and it is 6
Programa 2:
// Java Program to demonstrates // the compareAndSet() function import java.util.concurrent.atomic.AtomicInteger; public class GFG { public static void main(String args[]) { // Initially value as 0 AtomicInteger val = new AtomicInteger(0); // Prints the updated value System.out.println("Previous value: " + val); // Checks if previous value was 0 // and then updates it boolean res = val.compareAndSet(10, 6); // Checks if the value was updated. if (res) System.out.println("The value was" + " updated and it is " + val); else System.out.println("The value was " + "not updated"); } }
Previous value: 0 The value was not updated
Referencia: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html#compareAndSet–