CAS
- Compare And Swap;
- CAS中使用了三个基本操作数:内存位置(V)、预期原值(A)和新值(B);
- 更新变量时,只有当V中的值与A相同才会修改为B;
- CAS是通过无限循环来获取数据,如果获取数据同预期不同,则需要自旋(循环判断条件是否满足);
CAS的缺点
- CPU开销大;
- 不能保证代码块的原子性,只能保证一个变量的原子性;
- 会发生ABA问题,即预期的值A在线程阻塞时,发生了
A->B->A
的过程;- 解决的方案是增加一个版本号;
A->B->A
的过程;
本文标题:Java中的CAS
本文链接:https://www.haomeiwen.com/subject/uxfephtx.html
网友评论