gpt4 book ai didi

java - 在 Java 9 中还可以使用 sun.misc.Unsafe 吗?

转载 作者:行者123 更新时间:2023-12-01 20:05:21 25 4
gpt4 key购买 nike

直到 Java 8 才可以获得单例 sun.misc.Unsafe 通过如下方法实例:

public static Unsafe getUnsafe() {
try {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
return (Unsafe) f.get(null);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

尽管强烈建议不要使用 Unsafe ,许多供应商和图书馆在内部使用它。

现在,有了 Java 9 和 Jigsaw,我认为这也是如此 Unsafe处理方式已经改变。我读了一些带有相反信息的帖子。有人说它已完全隐藏,甚至无法检索,有人说必须启用 VM 标志,而另一些人则说它现在应该得到正式支持。

那么:是否还可以使用 sun.misc.Unsafe在 Java 9 中,如果是,如何实现?

最佳答案

不仅获取它的方式保持不变,而且还添加了更多方法。问题是,现在这是一个 promise ,它将在未来某个时候被删除;这次是肯定的。

现在还有两个,一个:sun.misc.Unsafejdk.internal.misc.Unsafe。顺便说一句,第一个是要删除的。

第二个也可以在 java-9 中获得,但只能使用特殊键 addExports:java.base/jdk.internal.misc=ALL-UNAMED (但强烈建议不要这样做) 。

发生的变化是,许多公共(public)方法已被修补或添加,以便您不再需要使用它,例如 AtomicInteger#weakCompareAndSet 并没有执行您的操作会期望。

关于java - 在 Java 9 中还可以使用 sun.misc.Unsafe 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com