Java 9 VarHandle实现细节

时间:2017-11-03 14:47:44

标签: java java-9

我一直在阅读Java中的VarHandle,从文档中将访问模式分为以下几类:

  

读取访问模式,例如使用易失性内存读取变量   订购效果;

     

写入访问模式,例如使用释放内存更新变量   订购效果;

     

原子更新访问模式,例如变量的比较和设置   具有易失性存储器顺序效果,用于读写;

     

数字原子更新访问模式,例如使用plain进行get-and-add   用于写入和获取内存顺序效果的内存顺序效果   读数。

     

按位原子更新访问模式,例如get-and-bitwise-with和   释放内存顺序效果,用于写入和普通内存顺序   阅读效果。

JEP 193: Variable Handles

Using JDK 9 Memory Order Modes

中找到以下代码示例
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
class Point {
   volatile int x, y;
   private static final VarHandle X;
   static {
     try {
       X = MethodHandles.lookup().
           findVarHandle(Point.class, "x",
                         int.class);
     } catch (ReflectiveOperationException e) {
       throw new Error(e);
     }
   }
   // ...
}

我想弄清楚它是如何实现这一点的,底层实现是什么以及如何使用所有这些访问模式?

0 个答案:

没有答案