一定要看这个链接的视频,讲解十分清楚!!!
【【Java并发】面试官问我CAS、乐观锁、悲观锁,我反手就是骑脸输出】 https://www.bilibili.com/video/BV1ff4y1q7we/?share_source=copy_web&vd_source=afbacdc02063c57e7a2ef256a4db9d2a
下面是文字版
假如有一个女神变量g = 0,g为0表示女神有空,1则是约会中
然后有两个舔狗线程t1,t2,两个线程都是读到了g = 0,也就是oldValue = 0 然后这里addr = &g ,接着假如t1率先下手抢到了和g的约会机会,然后*addr = 1,表示约会成功!t2过来发现*addr为1,但是读到的oldValue = 0,也就是*addr != oldValue,因此t2无法和g约会。
这就是CAS的大概过程!