CAS 的问题 ?
2024-09-06 10:35:11
1、CAS 容易造成 ABA 问题
一个线程 a 将数值改成了 b,接着又改成了 a,此时 CAS 认为是没有变化,其实
是已经变化过了,而这个问题的解决方案可以使用版本号标识,每操作一次
version 加 1。在 java5 中,已经提供了 AtomicStampedReference 来解决问题。
2、不能保证代码块的原子性
CAS 机制所保证的知识一个变量的原子性操作,而不能保证整个代码块的原子性。
比如需要保证 3 个变量共同进行原子性的更新,就不得不使用 synchronized 了。
3、CAS 造成 CPU 利用率增加
之前说过了 CAS 里面是一个循环判断的过程,如果线程一直没有获取到状态,cpu
资源会一直被占用。
最新文章
- php://input
- Mybatis if test中字符串比较
- 译:在ASP.NET中如何对cookies进行加密和解密
- Android之开启手机系统自带铃声
- Oracle sqlldr使用示例
- 二十、Android -- SDcard文件读取和保存
- 第一篇、Swift_Textkit的基本使用
- css3的loadding效果
- error C2504: “CActiveXDocControl”: 基类没有定义
- 每天一个Linux命令—— crontab
- 浅谈python的对象的三大特性之封装
- Linux创建普通用户以及权限的分配
- 新概念英语(1-143)A walk through the woods
- 记一次erlang语言bug导致rabbitmq的队列没有消费者的问题
- VS2012遇到一个问题:";链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的";
- NOIP2015题解
- Oracle监听已经启动了 sqlplus / as sysdba 仍然报 ERROR:ORA-12560
- 转 VMware虚拟机三种联网方式(图文详细解说)
- jquery计算时间差(天、时、分、秒)并使用定时器实时获取
- Codeforces 1006 F - Xor-Paths