Java并发编程之CAS第三篇-CAS的缺点及解决办法
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理。那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《CAS系列》教程的第三篇:CAS的缺点有哪些?怎么解决。 CAS的缺点 一:do while循环时间长的话开销大 从源码中(见上图),我们可以知道do while中的while返回true会一直循环下去(具体分析步骤见上一篇:《Java并发编程之CAS二源码追根溯源》。凯哥(凯哥Java:kaigejava)就不在这里赘述了)。如果并发量很多的话,比如:有十万个线程来并发处理,这这种业务下,很多线程都会修改共享变量,要保证原子性的话,循环会很长时间,假设每个线程为了保证原子性,循环耗时0.001s的话,那么十万个线程都这么循环下来,对CPU的消耗还是比较大的。 二:只能保证一个共享变量的原子性 从源码中,我们知道 Object var1其实就是对象自己。拿上一篇文章举的例子来说,其实就是atomicInteger自己,也就是共享变量。CA...