Skip to content
Related Articles

Related Articles

Improve Article
AtomicLongArray compareAndSet() method in Java with Examples
  • Last Updated : 05 Feb, 2019

The Java.util.concurrent.atomic.AtomicLongArray.compareAndSet() is an inbuilt method in java that atomically sets the element at a position to the given updated value if the current value is equal to the expected value. This method takes the index value, the expected value and the update value as the parameters and returns a boolean value stating if the value has been updated.

Syntax:

public final boolean compareAndSet(int i, long expect, long update)

Parameters: The function accepts three parameters:

  • i: The index where operation is to be made.
  • expect: The expected value to check if it is equal to current value.
  • update: The value to be updated.

    Return value: The function returns a boolean value stating if the value has been updated. It returns true if successful, else it returns false indicating that the current value was not equal to the expected value.



    Below programs illustrate the above method:
    Program 1:




    // Java program that demonstrates
    // the compareAndSet() function
      
    import java.util.concurrent.atomic.AtomicLongArray;
      
    public class GFG {
        public static void main(String args[])
        {
            // Initializing an array
            long a[] = { 1, 2, 3, 4, 5 };
      
            // Initializing an AtomicLongArray with array a
            AtomicLongArray arr = new AtomicLongArray(a);
      
            // Displaying the AtomicLongArray
            System.out.println("The array : " + arr);
      
            // Index where operation is performed
            int idx = 3;
      
            // Value to expect at idx
            long expect = 4;
      
            // Value to update if current value
            // is equal to expected value
            long update = 40;
      
            // Updating the value at idx
            // applying compareAndSet
            arr.compareAndSet(idx, expect, update);
      
            // Displaying the AtomicLongArray
            System.out.println("The array after update : "
                               + arr);
        }
    }
    Output:
    The array : [1, 2, 3, 4, 5]
    The array after update : [1, 2, 3, 40, 5]
    

    Program 2:




    // Java program that demonstrates
    // the compareAndSet() function
      
    import java.util.concurrent.atomic.AtomicLongArray;
      
    public class GFG {
        public static void main(String args[])
        {
            // Initializing an array
            long a[] = { 1, 2, 3, 4, 5 };
      
            // Initializing an AtomicLongArray with array a
            AtomicLongArray arr = new AtomicLongArray(a);
      
            // Displaying the AtomicLongArray
            System.out.println("The array : " + arr);
      
            // Index where operation is performed
            int idx = 3;
      
            // Value to expect at idx
            long expect = 40;
      
            // Value to update if current value
            // is equal to expected value
            long update = 4;
      
            // Updating the value at
            // idx applying compareAndSet
            arr.compareAndSet(idx, expect, update);
      
            // Displaying the AtomicLongArray
            System.out.println("The array after update : "
                               + arr);
        }
    }
    Output:
    The array : [1, 2, 3, 4, 5]
    The array after update : [1, 2, 3, 4, 5]
    

    Reference:
    https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLongArray.html#compareAndSet-int-long-long-

    Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




    My Personal Notes arrow_drop_up
  • Recommended Articles
    Page :