这两个不可以交换,CAS主要就在于比较并交换,前提就是要有一个原始值以及期望值,当这两者相同时,你才能改变,这里的交换不是指var1和var5进行交换,就比如你说的var5为0,var1为改变后的1,那var1改变的条件是什么?var1改变的前提就是var1和var5是相同的情况下,其实这个很好理解,你本来有个0,你执行++操作,但是底层会判断,你当前给我的期望值是不是0,是的话,我才给你++,不是我就不加,其实getAndIncrement方法看的不是很清晰,你可以看一下,AtomicStampedReference类的compareAndset方法体现的清楚
[quote=引用 1 楼 亦夜 的回复:] 这两个不可以交换,CAS主要就在于比较并交换,前提就是要有一个原始值以及期望值,当这两者相同时,你才能改变,这里的交换不是指var1和var5进行交换,就比如你说的var5为0,var1为改变后的1,那var1改变的条件是什么?var1改变的前提就是var1和var5是相同的情况下,其实这个很好理解,你本来有个0,你执行++操作,但是底层会判断,你当前给我的期望值是不是0,是的话,我才给你++,不是我就不加,其实getAndIncrement方法看的不是很清晰,你可以看一下,AtomicStampedReference类的compareAndset方法体现的清楚
62,628
社区成员
307,259
社区内容
加载中
试试用AI创作助手写篇文章吧