CAS为什么是同步非阻塞的?
来源:3-1 线程安全性-原子性-atomic-1
![](http://img1.sycdn.imooc.com/user/5458676e0001af7702200220-100-100.jpg)
有所为有所不为5211
2019-09-14
老师,同步怎么可以理解。为什么是非阻塞的怎么都想不通
写回答
1回答
-
Jimin
2019-09-15
你好,如果是同步阻塞的话,那一定是有锁,导致在某段代码或每个指令那里,只有一个线程能执行,其他线程要等待锁解除才能执行。
而cas执行的过程中是没锁的,通过自旋完成的,不断的尝试去更新,直接实际更新完成,这时是可以多个线程一起尝试的,而不是一个线程执行其他阻塞。另外,是否真的有锁,看一下源码是否包含synchronized或者lock就可以了,cas里明显没使用。00
相似问题