(1)CAS是什么?

       比较并交换

     举例1,  CAS产生场景代码?

import java.util.concurrent.atomic.AtomicInteger;

public class CASDemo {
    public static void main(String[] args) {
        AtomicInteger atomicInteger=new AtomicInteger(5);//主物理内存
        //比较5
        System.out.println(atomicInteger.compareAndSet(5, 2019)+"\t current data(主物理内存) : "+ atomicInteger.get());
        //修改失败
        System.out.println(atomicInteger.compareAndSet(5, 1024)+"\t current data(主物理内存) : "+ atomicInteger.get());
    }
}

   举例2,  CAS产生场景代码?原子引用

public class CAS_ABADemo {
    public static void main(String[] args) {

        //========================原子引用==========================
        User A = new User("A", 123);
        User B = new User("B", 456);
        //主物理内存 引用比较的是地址
        AtomicReference<User> atomicReference1 = new AtomicReference<>();
        atomicReference1.set(A);
        System.out.println(atomicReference1.compareAndSet(A, B) + "\t" + atomicReference1.get().toString());
        System.out.println(atomicReference1.compareAndSet(A, B) + "\t" + atomicReference1.get().toString());
    }
}
class User {
    String name;
    int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
原子引用

相关文章:

  • 2021-08-23
  • 2021-01-15
  • 2021-09-15
  • 2019-12-27
  • 2022-12-23
猜你喜欢
  • 2021-08-04
  • 2020-04-25
  • 2021-08-18
  • 2021-07-06
  • 2020-04-22
  • 2021-08-20
  • 2021-10-09
相关资源
相似解决方案