`
liuzhaomin
  • 浏览: 207349 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

compareAndSwapObject

阅读更多
/** 
*比较并更新对象的某一个整数类型的域 
*@param obj 被操作的对象 
*@param fieldoffset 被操作的域在对象中的偏移量 
*@param expect 域的期望值 
*@param update 域的更新值 
*/  
boolean compareAndSwapInt(Object obj,long fieldoffset, int expect, int update);  
  
/** 
*比较并更新对象的某一个对象类型的域 
*@param obj 被操作的对象 
*@param fieldoffset 被操作的域在对象中的偏移量 
*@param expect 域的期望值 
*@param update 域的更新值 
*/  
boolean compareAndSwapObject(Object obj,long Fieldoffset, Object expect, Object update);  
  
/** 
*获得对象某个域的偏移量 
*@param field 要获得偏移量的域 
*/  
long objectFieldOffset (Field field);  
  
/** 
*使当前线程在指定的等待时间之前一直等待 
*@param flag 等待时间类型 true代表绝对时间(用相对于历元 
*(Epoch) 的毫秒数值表示),false代表相对时间 
*@param time 等待的时间,单位毫秒 
*/  
void park(boolean flag, long time);  
  
/** 
*取消指定线程的等待 
*@param thread 被取消等待的线程 
*/  
void unpark(Thread  thread)  
  
/** 
*通过偏移量,获取某个对象Object类型的域 
*@param obj 被操作的对象 
*@param fieldoffset 偏移量 
*/  
Object getObject(Object obj,long fieldoffset);  
  
/** 
*通过偏移量,获取某个对象整数类型的域 
*@param obj 被操作的对象 
*@param fieldoffset 偏移量 
*/  
int getInt(Object obj,long fieldoffset);
 
分享到:
评论

相关推荐

    FutureTask底层实现分析,有了FutureTask主线程要想获得工作线程(异步计算线程)的结果变得比较简单

    compareAndSwapObject 方法其实比较的是两个 Java Object 的地址,如果相等则将新的地址(Java Object)赋给该字段。 在 run() 方法中,还有一个非常重要的逻辑,即执行 Callable 接口的任务逻辑。如果执行成功,就...

    Java 多线程与并发(15-26)-JUC集合- ConcurrentLinkedQueue详解.pdf

    return UNSAFE.compareAndSwapObject(this, itemOffset, cmp, val); } void lazySetNext(Node<E> val) { UNSAFE.putOrderedObject(this, nextOffset, val); } boolean casNext(Node<E> cmp, Node<E> val) { ...

    Java并发之无锁.docx

    例如,`compareAndSwapObject`、`compareAndSwapInt`和`compareAndSwapLong`分别用于对象引用、整型和长整型的CAS操作。 当多个线程尝试使用CAS更新同一变量时,只有一个线程能成功,其他线程会失败并重试,这种...

    【并发编程】CAS到底是什么.pdf

    **调用方法**:通过调用`compareAndSwapInt`、`compareAndSwapLong`或`compareAndSwapObject`方法,传入对象、内存偏移量、期望值和新值。 2. **读取并比较**:读取指定位置的值,并与期望值进行比较。 3. **更新...

    一篇看懂Java中的Unsafe类

    return h == head && UNSAFE.compareAndSwapObject(this, headOffset, h, nh); } ``` 3. **直接内存访问**:`Unsafe`可以分配非堆内存,不占用Java堆空间,但需要手动管理。这对于提高性能、减少垃圾收集的开销很...

    java开发岗位面试题汇总

    `ConcurrentHashMap`使用`compareAndSwapObject`方式来保证线程安全性,而不是锁定整个集合。 #### ArrayList、LinkedList与Vector的区别 - **ArrayList**与**LinkedList**: - **数据存储**:ArrayList采用动态...

    architect-awesome:初步架构师技术图谱

    非双向变量:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 双向队列:ArrayBlockingQueue(有界),LinkedBlockingQueue(无界),DelayQueue,PriorityBlockingQueue,...

    javabitset源码-java_master:后端架构师技术图谱

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    亚信java笔试题-Book:架构师之路

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    高级java笔试题-architect-awesome:后端架构师技术图谱

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    java简易投票系统源码下载-study-way:学习路线

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    leetcode中国-architect-go:后端架构师技术图谱-go

    机制(compareAndSwapObject 原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用锁机制;使用 ReentrantLock 锁。 集合 链表、数组 字典、...

    高级java笔试题-architect:架构师之路

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    阿里云java短信验证码源码-fenbushi-dititribute:fenbushi-dititribute

    非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用...

    Java concurrency之AtomicReference原子类_动力节点Java学院整理

    return unsafe.compareAndSwapObject(this, valueOffset, expect, update); } public final V getAndSet(V newValue) { while (true) { V x = get(); if (compareAndSet(x, newValue)) return x; } } ...

    深入Java对象的地址的使用分析

    `compareAndSwapInt`和`compareAndSwapObject`分别用于整型和对象类型的原子比较和交换操作。这些方法在并发编程中尤其有用,比如在实现锁或其他同步机制时。 需要注意的是,`sun.misc.Unsafe`并不是Java标准库的一...

    了解JAVA并发工具常用设计套路

    在Java中,CAS操作通常通过`Unsafe`类的`compareAndSwapInt`、`compareAndSwapLong`和`compareAndSwapObject`等方法实现。`Unsafe`类提供了底层的内存操作,能够实现非阻塞的并发控制。 掌握这些设计模式对于理解和...

Global site tag (gtag.js) - Google Analytics