什么是CAS?

2023-08-23  本文已影响0人  鳌拜的弟弟熬夜

CAS(compare and swap)的缩写。Java利用CPU的CAS指令,同时借助JNI来完成Java的非阻塞算法,实现原子操作。其它原子操作都是利用类似的特性完成的。

CAS有3个操作数:内存值V,旧的预期值A,要修改的新值B。

当且仅当预期值A和和内存值V相同时,将内存值V修改为B,否则什么都不做。

CAS的缺点:

    ●    CPU开销过大:在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更新不成功,循环往复,会给CPU带来很大的压力。

    ●    不能保证代码块的原子性:CAS机制所保证的只是一个变量的原子性操作,而不能保证整个代码块的原子性。比如需要保证3个变量共同进行原子性的更新,就不得不使用synchronized了。

    ●    ABA问题:这是CAS机制最大的问题所在。

上一篇下一篇

猜你喜欢

热点阅读