我知道没有锁定的C++中增量操作不是原子的。

JVM会在iinc指令的实现中添加任何锁吗?

最佳答案

不,这不对

  • 检索c的当前值。
  • 将检索到的值增加1。
  • 将增量值存储回c中。

  • Java Documentation for Atomicity and Thread Interference

    为了线程安全,您需要使用synchronized关键字或使用AtomicXXX方法。

    更新:
    public synchronized void increment() {
        c++;
    }
    

    或者
    AtomicInteger integer = new AtomicInteger(1);
    //somewhere else in code
    integer.incrementAndGet();
    

    另请参阅:Is iinc atomic in Java?

    08-05 14:52