首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >原子整数计数器打印顺序错误

原子整数计数器打印顺序错误
EN

Stack Overflow用户
提问于 2019-05-24 03:00:46
回答 1查看 272关注 0票数 2

我定义了以下实例变量:

代码语言:javascript
复制
private final AtomicInteger tradeCounter = new AtomicInteger(0);

我有一个名为onTrade的方法,定义如下,由6个线程调用:

代码语言:javascript
复制
public void onTrade(Trade trade) {
    System.out.println(tradeCounter.incrementAndGet());
}

为什么会出现以下输出:

2 5 4 3 1 6

而不是1 2 3 4 5 6?

我想避免使用同步。

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 03:08:12

System.out.println(...)和tradeCounter.incrementAndGet()是两个独立的操作,最有可能的情况是,当线程i获得新值时,一些其他线程可以获得值并在线程打印之前打印它。这里没有办法避免同步(直接或间接)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56281452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档