如何在 Java 9 中创建静态 VarHandle?
javaobject oriented programmingprogramming更新于 2025/10/18 0:12:17
VarHandle 是对变量的引用,它提供在各种访问模式下对变量的访问(例如 plain read/write、volatile read/write 和 compare-and-swap),类似于 java.util.concurrent.atomic 和 sun.misc.Unsafe 提供的功能。变量可以是 array 元素、instance 或类中的 static 字段。
在下面的示例中,我们可以创建一个静态变量句柄。
示例
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
public class StaticVarHandleTest {
static int field;
static int[] array = new int[20];
static final VarHandle FIELD, ARRAY;
static {
try {
FIELD = MethodHandles.lookup().in(StaticVarHandleTest.class).findStaticVarHandle(StaticVarHandleTest.class, "field", Integer.TYPE);
ARRAY = MethodHandles.arrayElementVarHandle(int[].class);
} catch(Exception e) {
throw new InternalError(e);
}
}
public static void main(String args[]) throws Exception {
int i = (int)FIELD.getVolatile();
System.out.println(i);
FIELD.getAndAdd(5);
System.out.println(field);
System.out.println(ARRAY.getAndAdd(array, 5, 5));
System.out.println(ARRAY.getAndAdd(array, 5, 5));
}
}
输出
0 5 0 5
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

