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 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));
}
}
Output:
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 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));
}
}
Output:
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