天天看点

Java自定义cas操作

java Unsafe工具类提供了一个方法

这个就是一个cas操作,原子操作。比较var1, 在var2偏移即offset位置的值是否为var4。如果是var4,更新为var5,返回true。否则,不做更新返回false

最近,听同事说了cas用到项目里面,感觉高大上。学习了一下,包装了一个cas整型操作

写了一测试类

这里可以通过cas实现,线程安全。cas有点就是不会有锁的开销,上下文切换。也有缺点,自旋浪费资源,不能对多个资源保证线程安全

这里需要注意两点

1. 使用反射获取Unsafe对象

2. 注意offset的获取