Java中的 AtomicInteger weakCompareAndSet() 方法及示例
Java.util.concurrent.atomic.AtomicInteger.weakCompareAndSet()是Java中的一个内置方法,如果当前值等于参数中传递的预期值,则该方法将值设置为参数中传递的值。该函数返回一个布尔值,它让我们知道更新是否完成。
句法:
public final boolean weakCompareAndSet(int expect,
int val)
参数:该函数接受两个强制性参数,如下所述:
- 期望:指定原子对象应该是的值。
- val:如果原子整数等于expect,则指定要更新的值。
返回值:函数返回一个布尔值,成功则返回true,否则返回false。
下面的程序演示了该函数:
方案一:
// Java program that demonstrates
// the weakCompareAndSet() 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.weakCompareAndSet(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
方案二:
// Java program that demonstrates
// the weakCompareAndSet() 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.weakCompareAndSet(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
参考: https: Java/util/concurrent/atomic/AtomicInteger.html#weakCompareAndSet–