Java AtomicLong weakCompareAndSet()方法及示例
Java.util.concurrent.atomic.AtomicLong.weakCompareAndSet() 是java中的一个内置方法,如果当前值与参数中传递的预期值相等,则将该值设置为参数中传递的值。该函数返回一个布尔值,让我们知道是否进行了更新。
语法
public final boolean weakCompareAndSet(long expect,
long val)
参数: 该函数接受两个强制性参数,描述如下。
- expect: 指定原子对象应该是的值。
- val: 指定在原子长等于期望值时要更新的值。
返回值: 该函数返回一个布尔值,成功时返回真,否则返回假。
下面的程序说明了上述方法。
程序1 :
// Java program that demonstrates
// the weakCompareAndSet() function
import java.util.concurrent.atomic.AtomicLong;
public class GFG {
public static void main(String args[])
{
// Initially value as 0
AtomicLong val = new AtomicLong(0);
// Prlongs 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
程序2
// Java program that demonstrates
// the weakCompareAndSet() function
import java.util.concurrent.atomic.AtomicLong;
public class GFG {
public static void main(String args[])
{
// Initially value as 0
AtomicLong val = new AtomicLong(0);
// Prlongs 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://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html#weakCompareAndSet-