Java9中的VarHandle

2020-05-08  本文已影响0人  zhaozhaoicode

VarHandle的特点

import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;

public class TestHelloVarHandle {

    int x = 8;

    private static VarHandle handle;

    static {
        try {
            handle = MethodHandles.lookup().findVarHandle(TestHelloVarHandle.class, "x", int.class);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        TestHelloVarHandle t = new TestHelloVarHandle();

        //plain read / write
        System.out.println((int)handle.get(t));
        handle.set(t,9);
        System.out.println(t.x);

        handle.compareAndSet(t, 9, 10);
        System.out.println(t.x);

        handle.getAndAdd(t, 10);
        System.out.println(t.x);

    }
}
上一篇 下一篇

猜你喜欢

热点阅读