VarHandle एक चर का संदर्भ है, और यह विभिन्न एक्सेस मोड (जैसे सादा पढ़ना/लिखना, वोलेटाइल पढ़ना/लिखना, और कंपेयर-एंड-स्वैप) के तहत चरों तक पहुंच प्रदान करता है, जो 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