AtomicInteger原理(待补充)
来源:互联网 发布:印刷开单软件 编辑:程序博客网 时间:2024/05/16 16:04
AtomicInteger 通俗地解释: 对某个内存值拷贝一个副本,某个线程若读到该副本,并对其进行计算,输出结果,在写入内存时,再次取出内存值和该副本比较,若副本和内存值相同,则把新的值写入内存。
较为官方的解释: 通过CAS(AtomicInteger)实现,CAS简而言之就是。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 两个问题: (1)CAS算法仍然可能会出现冲突,例如A、B两个线程,A已经进入写内存但未完成,此时A读取到的副本且读取成功,AB两个线程同时进入写内存操作,必然会造成冲突。
较为官方的解释: 通过CAS(AtomicInteger)实现,CAS简而言之就是。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 两个问题: (1)CAS算法仍然可能会出现冲突,例如A、B两个线程,A已经进入写内存但未完成,此时A读取到的副本且读取成功,AB两个线程同时进入写内存操作,必然会造成冲突。
CAS算法本质并非完全无锁,而是把获得锁和释放锁推迟至CPU原语实现,相当于尽可能的缩小了锁的范围;直接互斥地实现系统状态的改变,它的使用基本思想是copy-on-write——在修改完对象的副本之后再用CAS操作将副本替换为正本。 (2)ABA问题,若其中一个线程修改A->B->A,另外一个线程仍然读取到A,虽然值是预期值,但并不能说明该内存值没有变化。
转载自:http://caogen81.iteye.com/blog/2002884
0 0
- AtomicInteger原理(待补充)
- Spring MVC框架原理(待补充)
- 1、MapReduce 工作原理简介(待补充)
- 计划(待补充)
- 操作系统(待补充)
- HMM资源(待补充)
- linux常用命令(待补充)
- 常用路径(待补充)
- 浅谈搜索(待补充)
- 字典树(待补充)
- vector实现(待补充)
- 内部类(待补充)
- gdb调试(待)补充
- 广义表(待补充)
- moive纹理(待补充)
- 二分查找(待补充)
- 闭包(待补充)
- 组合数取模(待补充)
- iOS swift动画和特效专题
- 统计指定文件夹下的文件数量
- Jquery获取css中id和class样式的动作-#id和.class
- getParameter和getAttribute的区别
- Too many alarms (500) registered
- AtomicInteger原理(待补充)
- 项目管理的一二四法则
- Jquery Ajax调用aspx页面方法
- 42-44组合模式
- Hdu 1068 Girls and Boys【最大匹配】
- 我的收藏集
- Android JSBridge的原理与实现 (prompt和javascript)
- AngularJS自定义指令
- 【杭电oj】1022 - Train Problem I(栈)