CAS(Compare And Swap)即比较并交换,CAS 是乐观锁技术,当多个线程尝试使用 CAS 同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。它包含三个参数:V 内存值,预期值 A,要修改的新值 B。当且仅当预期值 A 和内存值 V 相同时,将内存值 V 修改为 B,否则什么都不做。
阻塞和自旋其实是线程两种等待操作共享资源的方式,这两种方式也是比较常用的方式,它们主要区别在于:
阻塞:线程进入阻塞状态,其表现为放弃CPU时间片,等待后期被操作系统线程调度器唤醒,然后在继续执行线程中的逻辑。
自旋:线程进入自旋状态,其表现为不放弃CPU时间片,利用CPU来进行“旋转”,也就是不断地进行重试。