采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好:
为什么要用getAndIncrement 再判断 if (c + 1 < capacity),为什么不直接用incrementAndGet <capacity这样呢?
我认为getAndIncrement获取到值后直接在当前线程中进行操作,而incrementAndGet会使用CAS算法去进行比较替换,期间可能替换失败而导致过多的自旋操作,用getAndIncrement就没有多余的自旋操作这个步骤了
非常感谢! 看到源码里两个调用unsafe 一个是return unsafe.getAndAddInt(this, valueOffset, 1); 另一个是return unsafe.getAndAddInt(this, valueOffset, 1) + 1; 好像没啥区别 :)
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
868 11
1.2k 10
854 10
858 10
1.2k 9