java - iinc在Java中是原子的吗?

标签 java jvm atomic

我知道在没有锁定的情况下,增量操作在 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?

关于java - iinc在Java中是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15287419/

相关文章:

c# - C# 中的复合赋值 ^= 是原子的吗?

Java AtomicInteger 在一百万次迭代后不等于一百万(包括最小示例)

java - OracleDriver 不接受 jdbcUrl jdbc :oracle:thin@localhost:1521/orcl

java - 我如何从 aws cloudwatch 的特定指标中获取数据?

java - 双(象棋)计时器

java - 尝试使用资源引入无法访问的字节码

clojure - 持久化 JVM 功能是如何在 cake 中实现的?

java - 为什么当我增加新时代内存时,Minor GC 时间会增加

java - 扫描仪双值 - InputMismatchException

svn - Subversion 中原子提交的值(value)是什么?