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

java cas硬件底层接口 sun.misc.Unsafe UNSAFE

 
阅读更多
/**
*比较并更新对象的某一个整数类型的域
*@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);

 

分享到:
评论

相关推荐

    JDK8中sun.misc下UnSafe类源代码 UnSafe.java

    Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe"); theUnsafe.setAccessible(true); Unsafe unsafe = (Unsafe) theUnsafe.get(null); ``` 三、主要方法解析 1. **内存操作**:UnSafe提供了内存分配...

    JAVA CAS深度分析

    2. CAS 操作的实现:JAVA 中的 CAS 操作通过 sun.misc.Unsafe 类的 compareAndSwapInt() 方法实现,该方法借助 JNI 调用 CPU 底层指令来实现 CAS 操作。 3. CAS 操作的应用:JAVA 中的 CAS 操作主要应用于 java.util...

    一篇看懂Java中的Unsafe类

    UNSAFE = sun.misc.Unsafe.getUnsafe(); headOffset = UNSAFE.objectFieldOffset(TransferStack.class.getDeclaredField("head")); } catch (Exception e) { throw new Error(e); } } boolean casHead(SNode h,...

    CAS底层原理与ABA问题.docx

    在Java中,CAS操作主要通过`sun.misc.Unsafe`类来实现,这个类提供了对内存的直接访问,包括一些原生方法,它们直接调用操作系统底层的API来完成原子性操作。 CAS操作包含三个参数:内存值V,旧的预期值A以及要修改...

    深入分析Java并发编程之CAS

    在Java中,CAS操作是通过`Unsafe`类实现的,这个类位于`sun.misc`包下,提供了对内存的直接访问和原子操作。 `Unsafe`类是一个非常强大的工具,但同时也非常危险,因为它允许程序员绕过Java的内存安全机制,直接...

    Java Unsafe类1

    这个类在`sun.misc`包下,由于其潜在的危险性和不稳定性,官方并不推荐直接使用,甚至在Java 9之后有计划移除部分功能。然而,`Unsafe`的存在使得Java能够执行一些低级别的操作,比如直接操作内存、字段偏移量计算、...

    JDK Unsafe 源码注释

    虽然Oracle发行的JDK版本不包含Unsafe的源代码,但在并发编程中,Unsafe类为java.util.concurrent包里的类提供了底层支持,例如通过提供绕过JVM直接修改内存的能力和使用硬件CPU指令实现CAS(Compare-And-Swap)原子...

    varhandle2:JVM 原子操作的安全而有效的实现

    例如,这里是使用 sun.misc.Unsafe 为 compareAndSet (CAS) 生成的代码: Code: [Entry Point] [Constants] # {method} {0x00007f79679e1f40} 'compareAndSetWithUnsafe' '(Ljava/lang/String;Ljava/lang/String...

    Java并发编程-并发容器1

    4. **U**: `sun.misc.Unsafe U` 类用于实现底层的CAS操作,保证线程安全性。 **关键类** 1. **Node**: 实现了Map.Entry接口,存储key-value对,具有next域。多个字段使用volatile修饰,确保内存可见性。 2. **...

    Java面试.docx

    - CAS在Java中通过`sun.misc.Unsafe`类的原语方法实现,这些方法是native的,直接与硬件交互。 - CAS的缺点包括循环时间长、只能保证单个共享变量的原子操作,以及可能出现ABA问题。 5. **ABA问题**: - 当一个...

    Java语言中非阻塞算法的实现.zip

    Java的`sun.misc.Unsafe`类提供了对CAS的直接访问,但通常不建议直接使用,而是通过`Atomic`类间接使用。CAS操作会比较目标值和预期值,如果相等则更新目标值,否则失败。这种机制避免了锁的使用,减少了线程的等待...

    Java并发之无锁.docx

    在Java中,无锁实现通常依赖于`java.lang.invoke.VarHandle`或`sun.misc.Unsafe`类,后者是不公开推荐的,但因其可以直接操作内存而被用于实现高效并发。`Unsafe`类提供了一系列方法,如内存分配、内存拷贝、内存...

    04 并发编程专题01.zip

    `sun.misc.Unsafe`是一个强大的类,它暴露了一些底层的JVM功能,包括内存操作、对象字段访问、类加载等。尽管它不是公开API,但在许多高性能库和框架中被广泛使用,比如`ConcurrentHashMap`的实现就利用了`Unsafe`...

    CAS

    CAS并发原语体现在Java语言中就是sun.misc.Unsafe类中的各个方法。 调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能。 由于CAS是一种系统原语,原语属于操作系统用语范畴,是...

    浅谈Java 并发的底层实现

    `AtomicInteger` 的 `getAndIncrement()` 方法就是一个例子,它在底层利用了 `sun.misc.Unsafe` 类,这是一个Java对C++风格的内存操作的封装。`Unsafe` 类提供了原子操作的实现,例如CAS(Compare and Swap)操作,...

    Java并发编程学习之Unsafe类与LockSupport类源码详析

    Unsafe类位于sun.misc包下,它提供了一系列的native方法,可以直接访问和修改内存,实现了硬件级别的原子操作。由于其强大的能力,Unsafe通常被视为一种“黑魔法”,不推荐在常规编程中使用,但在设计高性能并发组件...

    手写一个线程安全的非阻塞队列,并且实现入队出队方法

    实现思路:利用单向链表来保存队列的数据,在往队列中...import sun.misc.Unsafe; import java.lang.reflect.Field; public class MyLinkQueue { //头节点 private volatile Node head; //尾节点 private volati

    Java-并发容器之ConcurrentHashMap

    此外,`sun.misc.Unsafe`类在ConcurrentHashMap的实现中扮演重要角色,其提供的原子操作方法(如compareAndSwap*)利用CAS算法确保线程安全,这种方法在没有竞争的情况下效率极高,即使发生冲突,重试次数也是有限的...

Global site tag (gtag.js) - Google Analytics