Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để tạo VarHandle tĩnh trong Java 9?

VarHandle là một tham chiếu đến một biến và nó cung cấp quyền truy cập vào các biến trong các chế độ truy cập khác nhau (chẳng hạn như đồng bằng đọc / ghi , dễ bay hơi đọc / ghi so sánh và hoán đổi ), tương tự như chức năng được cung cấp bởi java.util.concurrent.atomic sun.misc.Unsafe . Các biến có thể là mảng phần tử, phiên bản hoặc tĩnh các trường trong một lớp.

Trong ví dụ dưới đây, chúng ta có thể tạo một xử lý biến tĩnh.

Ví dụ

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));
   }
}

Đầu ra

0
5
0
5