如何在 Java 9 中建立靜態 VarHandle?
VarHandle 是對變數的一個引用,它提供了以各種訪問模式(如普通 讀/寫、volatile 讀/寫和比較並交換)訪問變數的功能,類似於java.util.concurrent.atomic 和sun.misc.Unsafe提供的功能。這些變數可以是陣列 元素,例項 或某個類中的靜態 欄位。
在下面的示例中,我們可以建立一個靜態變數控制代碼。
示例
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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP