设为首页 加入收藏

TOP

Java高性能编程之CAS与ABA及解决方法(五)
2019-09-18 11:10:54 】 浏览:89
Tags:Java 高性能 编程 CAS ABA 解决 方法
* 由于CPU抢占问题,转账程序阻塞100ms * 银行转账1元,成功。余额:11 * 银行卡原来余额为10,接收转账1元,故期望余额为11元。实际余额:11 */ } }

上述的两个例子,也许不是最适合的,但确实阐述了我想要表达的想法。

话说回来,只有到自己写demo时,才能理解大佬写ABA的demo时内心的挣扎啊。囧

ABA问题的解决

ABA问题的解决,说白了就是通过引入版本号,从而解决ABA问题的造成的隐患。

用我的话说呢,就是通过引入版本号,了解到线程执行操作时,是否有别的线程做了类似ABA的事情,从而使得本线程的CAS操作重新执行。这里为什么重新执行,因为简单啊。当然,也可以如我那样打个输出或者注释什么的(可能会浪费系统资源)。不管怎么处理,起码这次我知道有这么个问题了。囧。

小结

至此,CAS机制,ABA问题及解决方案,都已经叙述完毕了。

核心总结:

ABA问题的本质就是由于对多线程下CAS流程控制的缺乏,而导致的信息缺失。表现出来的就是由于缺乏必要信息,而产生了隐患

该说的差不多都说了,简单回顾一下:

  • 凡事都有其利弊,往往弊端就是由于其优点带来的。如CAS的硬件支持。
  • 技术的学习,需要追寻技术特性的真正来源,才可以一步步走向架构师。
  • 学习,一方面需要寻求多方资料,另一方面也需要自己的理解与验证。
  • 遇到无法理解或者无法解读的事物时,就去寻找它的定义,它的原则。
首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇百度地图WEB端判断用户是否在网格.. 下一篇Java性能 -- CAS乐观锁

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目