The getAndSet() method of a AtomicReferenceArray class is used to atomically sets the value of index i of AtomicReferenceArray object to newValue which is passed as parameter and returns the old value of the AtomicReferenceArray object, with memory effects as specified by VarHandle.getAndSet(java.lang.Object…).VarHandle.getAndSet(java.lang.Object…) specified that variable is handle as memory semantics of setting as if the variable was declared volatile.
Syntax:
public final E getAndSet(int i, E newValue)
Parameters: This method accepts:
- i which is an index of AtomicReferenceArray to perform the operation,
- newValue which is the new value to set.
Return value: This method returns the old value of index i.
Below programs illustrate the getAndSet() method:
Program 1:
Java
// Java program to demonstrate // AtomicReferenceArray.getAndSet() 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>( 3 ); // set some value ref.set( 0 , 1234 ); ref.set( 1 , 4322 ); // apply getAndSet() int oldV1 = ref.getAndSet( 0 , 8913 ); int oldV2 = ref.getAndSet( 1 , 6543 ); // print System.out.println( "Old value at index 0: " + oldV1); System.out.println( "New value at index 0: " + ref.get( 0 )); System.out.println( "Old value at index 1: " + oldV2); System.out.println( "New value at index 1: " + ref.get( 1 )); } } |
Old value at index 0: 1234 New value at index 0: 8913 Old value at index 1: 4322 New value at index 1: 6543
Program 2:
Java
// Java program to demonstrate // AtomicReferenceArray.getAndSet() method import java.util.concurrent.atomic.*; public class GFG { public static void main(String[] args) { // create an atomic reference object. AtomicReferenceArray<String> ref = new AtomicReferenceArray<String>( 3 ); // set some value ref.set( 0 , "GFG" ); ref.set( 1 , "JS" ); // apply getAndSet() String oldV1 = ref.getAndSet( 0 , "GEEKS FOR GEEKS" ); String oldV2 = ref.getAndSet( 1 , "JAVA SCRIPT" ); // print System.out.println( "Old value at index 0: " + oldV1); System.out.println( "New value at index 0: " + ref.get( 0 )); System.out.println( "Old value at index 1: " + oldV2); System.out.println( "New value at index 1: " + ref.get( 1 )); } } |
Old value at index 0: GFG New value at index 0: GEEKS FOR GEEKS Old value at index 1: JS New value at index 1: JAVA SCRIPT