`

java原子更新器AtomicReferenceFieldUpdater的使用

 
阅读更多
AtomicReferenceFieldUpdater
    一个基于反射的工具类,它能对指定类的指定的volatile引用字段进行原子更新。(注意这个字段不能是private的)

通过调用AtomicReferenceFieldUpdater的静态方法newUpdater就能创建它的实例,该方法要接收三个参数:
    包含该字段的对象的类
    将被更新的对象的类
    将被更新的字段的名称

下面是例子:

package com.huangyunbin;

import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;


public class App
{
    public static void main(String[] args) throws Exception
    {
        AtomicReferenceFieldUpdater updater=AtomicReferenceFieldUpdater.newUpdater(Dog.class,String.class,"name");
        Dog dog1=new Dog();
        updater.compareAndSet(dog1,dog1.name,"test") ;
        System.out.println(dog1.name);

    }

}

 class Dog
{
     volatile  String name="dog1";

}




结果输出是:
test
0
2
分享到:
评论
2 楼 msdghs 2016-11-23  
LZ能来个原子场景的使用么
1 楼 ofdata 2016-05-13  
这句话“(注意这个字段不能是private的) ”是错误的,在当前类中使用当然可以用private,而且是必须用private

相关推荐

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

    Java并发编程中,AtomicIntegerFieldUpdater 是一个非常重要的工具类,它是Java并发包(concurrent.atomic)下的一个原子更新器,主要用于确保对某个实例对象中的int类型字段进行原子操作。这个类的设计目的是在不改变...

    Java原子变量类原理及实例解析

    Java原子变量类原理及实例解析 一、原子变量类简介 Java中的原子变量类是为了解决多线程环境下数据的一致性问题而设计的。它可以确保多线程环境下数据的原子性、可见性和有序性。原子变量类的主要特点是它可以在多...

    Java原子操作CAS原理解析

    Java原子操作CAS原理解析是Java并发编程中的一种机制,用于解决多线程并行情况下使用锁造成的性能损耗。CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么...

    原子类测试

    - `AtomicIntegerFieldUpdater`、`AtomicLongFieldUpdater`和`AtomicReferenceFieldUpdater`:动态生成特定类的某个字段的原子更新器,适用于无法直接访问的类的字段。 4. 原子类的工作原理: 原子类内部利用了...

    Java并发编程实践-电子书-08章实用.pdf

    例如,`AtomicIntegerArray`用于原子操作整型数组,而`AtomicReferenceFieldUpdater`则允许原子更新对象的特定字段。 总结来说,Java并发编程中的原子变量和非阻塞算法是应对锁的劣势的有效手段,它们提供了更高效...

    Java多线程之进阶篇(二).docx

    `java.util.concurrent.atomic`包中的原子类提供了一种无锁编程的解决方案,它们能够在不使用`synchronized`的情况下实现线程安全的更新操作。这些原子类使用了硬件级别的CAS(Compare and Swap)操作,这是一种低级...

    Java多线程Atomic包操作原子变量与原子类详解

    4. `AtomicIntegerFieldUpdater`, `AtomicLongFieldUpdater`, `AtomicReferenceFieldUpdater`: 这些类允许原子地更新指定类的指定字段。它们适用于那些不能直接使用原子类的场景,比如字段是私有的或者被final修饰的...

    java并发之原子操作类和非阻塞算法

    这些类在`java.util.concurrent.atomic`包中定义,包括针对基本类型的`AtomicBoolean`, `AtomicInteger`, `AtomicLong`等,用于原子更新布尔、整数和长整数。此外,还有针对数组元素的`AtomicIntegerArray`, `...

    java线程-Atomic的含义及示例_.docx

    3. **字段更新器**:例如`AtomicLongFieldUpdater`、`AtomicIntegerFieldUpdater`和`AtomicReferenceFieldUpdater`,用于更新对象字段的原子操作。 4. **引用类型**:如`AtomicMarkableReference`、`...

    CAS底层原理与ABA问题.docx

    如果需要对多个共享变量进行原子操作,就需要使用锁或者其他并发控制机制,如`java.util.concurrent.atomic.AtomicReferenceFieldUpdater`等工具类。 3. **ABA问题**:在某些情况下,一个线程读取到的值A,在其他...

    Java锁之自旋锁详解

    Landin, and Hagersten Lock)和MCSLock(Mellor-Crummey and Scott Lock):这两种自旋锁是基于链表结构的公平锁,它们将等待线程组织成一个队列,并使用`AtomicReferenceFieldUpdater`等原子更新器来维护队列状态...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段10讲 AtomicIntegerFieldUpdater,AtomicLongFieldUpdater,AtomicReferenceFieldUpdater讲解.mp4  高并发编程第三阶段11讲 AtomicXXXFieldUpdater源码分析及使用场景分析.mp4  高并发编程第三...

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段10讲 AtomicIntegerFieldUpdater,AtomicLongFieldUpdater,AtomicReferenceFieldUpdater讲解.mp4  高并发编程第三阶段11讲 AtomicXXXFieldUpdater源码分析及使用场景分析.mp4  高并发编程第三...

    concurrency:并发学习

    AtomicReference、AtomicReferenceFieldUpdater AtomicStampReference:CAS的ABA问题 原子性-synchronized 修饰代码块:大括号括起来的代码,作用于调用的对象 修饰方法:整个方法,作用于调用的对象 修饰静态方法:...

Global site tag (gtag.js) - Google Analytics