CAS为什么是同步非阻塞的?

来源:3-1 线程安全性-原子性-atomic-1

有所为有所不为5211

2019-09-14

老师,同步怎么可以理解。为什么是非阻塞的怎么都想不通

写回答

1回答

Jimin

2019-09-15

你好,如果是同步阻塞的话,那一定是有锁,导致在某段代码或每个指令那里,只有一个线程能执行,其他线程要等待锁解除才能执行。
而cas执行的过程中是没锁的,通过自旋完成的,不断的尝试去更新,直接实际更新完成,这时是可以多个线程一起尝试的,而不是一个线程执行其他阻塞。另外,是否真的有锁,看一下源码是否包含synchronized或者lock就可以了,cas里明显没使用。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程