Java 之 AtomicReference

写在前面:

AtomicReference类提供了一个可以原子读写的对象引用变量。 原子意味着尝试更改相同AtomicReference的多个线程(例如,使用比较和交换操作)不会使AtomicReference最终达到不一致的状态。 AtomicReference甚至有一个先进的compareAndSet(object expect. object update)方法,它可以将引用与预期值(引用)进行比较,如果它们相等,则在AtomicReference对象内设置一个新的引用。

 

创建一个AtomicReference:

AtomicReference atomicReference = new AtomicReference();
String initialReference = "the initially referenced string";
AtomicReference atomicReference = new AtomicReference(initialReference);

 创建一个类型的AtomicReference:

AtomicReference<String> atomicStringReference = new AtomicReference<String>();

 

获取值:

AtomicReference atomicReference = new AtomicReference("first value referenced");

String reference = (String) atomicReference.get();

赋值:


AtomicReference atomicReference = 
     new AtomicReference();
    
atomicReference.set("New object referenced");


比较赋值:

        String initialReference = "initial value referenced";

        AtomicReference<String> atomicStringReference =
                new AtomicReference<String>(initialReference);

        System.out.println(atomicStringReference.get());  //initial value referenced

        String newReference = "new value referenced";
        // 预期值(第一个)与已存在内存值比较,如果相等则更新为第二个
        boolean exchanged = atomicStringReference.compareAndSet(initialReference, newReference);
        System.out.println("exchanged: " + exchanged);   //true,
        System.out.println(atomicStringReference.get());  //new value referenced


        exchanged = atomicStringReference.compareAndSet(initialReference, newReference);
        System.out.println("exchanged: " + exchanged);  //false
        System.out.println(atomicStringReference.get());  //new value referenced

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值