Acomic
CAS算法:
CAS的全称是Compare And Swap 即是比较交换,其算法核心思想如下:
函数:CAS(V,E,N)参数:V表示要更新的变量 E预期值 N新值
如果V值等于E值,则将V的值设为N。若V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。通俗的理解就是CAS操作需要我们提供一个期望值,当期限值与当前线程的变量值相同,说明还没线程修改该值,当前线程可以进行修改,也就是执行CAS操作,但如果期望值与当前线程不符,则说明该值已被其他线程修改,此时不执行更新操作,但可以选择重新读取给变量再尝试再次修改该变量,也可以放弃操作
CAS算法优缺点:非阻塞算法、ABA问题、循环开销大、只保证一个共享变量原子操作。