sun.misc.Unsafe使用指南

作者: jekkay 分类: java,默认 发布时间: 2019-05-13 18:44

int转无符号long

normalize is a method for casting signed int to unsigned long, for correct address usage.

private static long normalize(int value) {
    if(value >= 0) return value;
    return (~0L >>> 32) & value;
}

CAS实现线程安全

如果使用CAS(Compare And Swap)原子操作可以实现数据的加乐观锁,实现数据的串行访问,其流程一般如下:

  • 获取当前的数据状态
  • 拷贝一份
  • 计算出修改后值
  • 执行CAS操作
  • 如果失败重头开始重新执行。

注意:

在JDK11中,已经将Unsafe已经剔除了,取而代之就是JDK9中就开始引入的Variable Handles,详细的介绍可以参考 http://openjdk.java.net/jeps/193

参考文章

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。