CAS原理分析

锁机制存在问题

      1.在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。

      2.个线程持有锁会导致其它所有需要此锁的线程挂起

      3.如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险

      注意:独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。

volatile问题:volatile只能保证变量对各个线程的可见性,但不能保证原子性

CAS算法操作

       CPU指令,在大多数处理器都采用CAS指令(我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少)。当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容