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