Java多线程之原子操作类( 三 )


ce踩过的坑
参考上面的代码,分享一个笔者遇到的一次坑 。ce的函数中,前两个参数是使用包装类的 。所以当参数超过128时,而且传入参数并不是.()获取的话,会导致 == .为false,则无法进行更新 。
public boolean compareAndSet(VexpectedReference,VnewReference,int expectedStamp,int newStamp) {Pair current = pair;returnexpectedReference == current.reference &&expectedStamp == current.stamp &&((newReference == current.reference &&newStamp == current.stamp) ||casPair(current, Pair.of(newReference, newStamp)));}

Java多线程之原子操作类

文章插图