我用的是mac air笔记本(应该和操作系统没有关系吧?),jdk是1.7 ,用AtomicInteger的incrementAndGet,应该是通过乐观锁保障现场安全的,但是执行结果和预期不一致,不知道什么原因,期望哪位大侠有空帮忙看一下。谢谢
代码如下:
package tv.cc.lab.thread;
import java.util.concurrent.atomic.AtomicInteger;
public class Test005 implements Runnable{
AtomicInteger atomicInteger = new AtomicInteger();
@Override
public void run() {
while (true){
Integer count = getCount();
if(count>170){
break;
}
System.out.println(">> " + count);
}
}
private Integer getCount() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTra
AtomicInteger的incrementAndGet的执行结果和预期不一致(不是1,2,3,4...),奇怪!不知道什么原因?
最新推荐文章于 2024-04-19 15:16:47 发布
在使用AtomicInteger的incrementAndGet时,博主发现执行结果并不如预期,即未按顺序递增。问题出在并发环境下,getCount()方法内的incrementAndGet与System.out.println()并非原子操作,导致打印顺序不可预测。通过在System.out.println上添加锁解决了问题,强调了保证原子性的必要性。
摘要由CSDN通过智能技术生成