【说站】java中CAS的底层原理
2024-10-19
42
java中CAS的底层原理
1、CAS的原理是用JNI调用C代码实现的,如果有Hotspot源代码的话,可以在Unsafe.cpp中找到实现。
static JNINativeMethod methods_15[] = { //省略一堆代码... {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)}, {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)}, //省略一堆代码... };
2、compareAndSwapint在Unsafe_CompareAndSwapint中深入Unsafe_CompareAndSwapint。
UNSAFE_ENTRY(jboolean, Unsafe_CompareAndSwapInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x)) UnsafeWrapper("Unsafe_CompareAndSwapInt"); oop p = JNIHandles::resolve(obj); jint* addr = (jint *) index_oop_from_field_offset_long(p, offset); return (jint)(Atomic::cmpxchg(x, addr, e)) == e; UNSAFE_END
以上就是java中CAS的底层原理,希望对大家有所帮助。更多Java学习指路:Java基础
本教程操作环境:windows7系统、java10版,DELL G3电脑。
更新于:1个月前赞一波!
相关文章
- 【说站】java方法重载的无效探究
- 【说站】java重载方法的参数设置
- 【说站】java内存溢出的四种情况
- 【说站】python gevent的原理分析
- 【说站】java抽象类和接口的区别探究
- 【说站】java多态中成员如何访问
- 【说站】java代码块的执行顺序是什么
- 【说站】java继承的优缺点分析
- 【说站】java动态绑定如何理解?
- 【说站】java静态绑定是什么
- 【说站】java静态和动态绑定的对比
- 【说站】java稀疏数组是什么
- 【说站】java如何检查内存泄漏
- 【说站】java内存泄漏
- 【说站】java方法重载
- 【说站】java内存泄漏的解决方法
- 【说站】java多态的理解
- 【说站】java数据结构
- 【说站】java程序编好了怎么运行
- 【说站】java中不同变量的区别
文章评论
评论问答