AtomicReference代码演示
import java.util.concurrent.atomic.AtomicReference;
class User{
private String userName;
private int age;
public User(String userName, int age) {
this.userName = userName;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", age=" + age +
'}';
}
}
public class AtomicReferenceDemo {
public static void main(String[] args) {
User zs = new User("zs",20);
User ls = new User("ls",25);
AtomicReference<User> userAtomicReference = new AtomicReference<>();
userAtomicReference.set(zs);
// 第一次比较交换成功,因为主内存中的值跟期望值一致(zs == zs)
System.out.println(userAtomicReference.compareAndSet(zs,ls)+"\t"+userAtomicReference.get().toString());
// 第二次比较交换失败,因为主内存中的值跟期望值不一致(ls != zs)
System.out.println(userAtomicReference.compareAndSet(zs,ls)+"\t"+userAtomicReference.get().toString());
}
}