Saturday, September 6, 2025
HomeLanguagesJavaAtomicReferenceArray weakCompareAndSet() method in Java with Examples

AtomicReferenceArray weakCompareAndSet() method in Java with Examples

The weakCompareAndSet() method of a AtomicReferenceArray class is used to atomically sets the value of the element at index i to newValue to newValue for AtomicReferenceArray if the current value is equal to expectedValue passed as parameter. This method updates the value at index i with memory semantics of reading as if the variable was declared volatile type of variable. This method returns true if set a new value to AtomicReference is successful.

Syntax:

public final boolean
       weakCompareAndSet(
           int i, E expectedValue, E newValue)

Parameters: This method accepts:

  • i which is an index of AtomicReferenceArray to perform the operation,
  • expectedValue which is the expected value and
  • newValue which is the new value to set.

Return value: This method returns true if set a new value to AtomicReference is successful.

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




// Java program to demonstrate
// weakCompareAndSet() method
  
import java.util.concurrent.atomic.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create an atomic reference object.
        AtomicReferenceArray<Integer> ref
            = new AtomicReferenceArray<Integer>(5);
  
        // set some value
        ref.set(0, 543);
        ref.set(1, 124);
        ref.set(2, 322);
  
        // apply weakCompareAndSet()
        boolean result
            = ref.weakCompareAndSet(0, 124,
                                    234);
  
        // print value
        System.out.println("Setting new value"
                           + " is successful = "
                           + result);
  
        System.out.println("Value of index 0 = "
                           + ref.get(0));
    }
}


Output:

Setting new value is successful = false
Value of index 0 = 543

Program 2:




// Java program to demonstrate
// weakCompareAndSet() method
  
import java.util.concurrent.atomic.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create an atomic reference object.c
        AtomicReferenceArray<String> ref
            = new AtomicReferenceArray<String>(5);
  
        // set some value
        ref.set(0, "INDIA");
        ref.set(1, "US");
        ref.set(2, "UK");
        ref.set(3, "CHINA");
        ref.set(4, "CHINA");
  
        // apply weakCompareAndSet()
        boolean result
            = ref.weakCompareAndSet(4, "CHINA",
                                    "CANADA");
  
        // print value
        System.out.println("Setting new value"
                           + " is successful = "
                           + result);
  
        System.out.println("Value of index 4 = "
                           + ref.get(4));
    }
}


Output:

Setting new value is successful = true
Value of index 4 = CANADA

References: https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/atomic/AtomicReferenceArray.html#weakCompareAndSet(V, V)

RELATED ARTICLES

Most Popular

Dominic
32270 POSTS0 COMMENTS
Milvus
82 POSTS0 COMMENTS
Nango Kala
6639 POSTS0 COMMENTS
Nicole Veronica
11803 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11869 POSTS0 COMMENTS
Shaida Kate Naidoo
6752 POSTS0 COMMENTS
Ted Musemwa
7029 POSTS0 COMMENTS
Thapelo Manthata
6705 POSTS0 COMMENTS
Umr Jansen
6721 POSTS0 COMMENTS