如何在java中使短手递增原子?

时间:2016-07-02 19:51:43

标签: java multithreading atomic

在多线程环境中,像i++这样的短手递增必须做多件事,因此另一个线程可以得到一个中间值。

让我们稍微分解一下,整数变量的简写增量由多个操作组成。首先,我们必须加载i的当前值,增加它,然后最后将新值存储回来。执行此增量的当前线程可能在这三个步骤中的任何一个之间被中断,因此该操作不是原子的

我想到的解决方案:我可以在i++和volatile关键字上使用同步块,但有没有更好的方法使i++看起来像每个线程的原子?我尝试过使用AtomicInteger我仍然认为在使用+ +增加短手的情况下它不会有帮助,我是对的吗?

1 个答案:

答案 0 :(得分:1)

如果您对不使用i++感到满意,可以使用AtomicInteger及其线程安全方法 不幸的是,如果你想使用i++,它将不是线程安全的