✅CAS一定有自旋吗?

典型回答

不一定,但是通常为了提高CAS的成功率,会考虑做自旋。

最简单的自旋就是while(true)

通常情况下,CAS 操作都会采用自旋的方式,当 CAS 失败时,会重新尝试执行 CAS 操作,直到操作成功或达到最大重试次数为止。

因为,CAS 操作一般都是在多线程并发访问时使用,如果直接阻塞线程,会导致性能下降,而采用自旋的方式,可以让 CPU 空转一段时间,等待锁被释放,从而避免线程切换和阻塞的开销。

但是,如果自旋时间过长或者线程数过多,就会占用过多的 CPU 资源,导致系统性能下降,因此在使用 CAS 操作时,需要根据实际情况进行适当的调整。

原文: https://www.yuque.com/hollis666/xkm7k3/cle1ag1rfu3uuwzg