原子操作是否需要Java中的同步

用户名

据我了解,原子操作是不可分割的,一个线程可以在线程2更改之前或在线程2进行更改之后看到系统状态,但是不能在两者之间看到。

例如说我在2个线程之间的共享对象上有一个方法:

public void incrementMe() { 
 //incrementing a shared int for this example
 atomicInt.incrementAndGet();
}

例如,我们的原子int的初始值为5。现在线程1和线程2都同时调用了增量我。会发生什么?据我了解,线程1将看到值5并同时将其递增到6线程2将看到值5,因为增量是原子的,因此线程2可以在after之后更改但在两者之间没有看到值,因此它可以看到值将其增加到6,最后我将得到6而不是7的值。对吗?我想念东西吗?

预先谢谢你

展示者

那是不对的。根据定义,原子是在一次操作中完成的。JVM在后台使用该Unsafe.compareAndSwap方法,该方法对单个处理器指令进行建模,该指令将增加值而无需担心先占。因此,线程1将值增加到6,线程2将值增加到7。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java中的size(),put(),remove(),get()原子是否同步HashMap?

来自分类Dev

在Java中,是否需要将简单分配同步到静态?

来自分类Dev

Java中的CountDownLatch是否需要其他同步?

来自分类Dev

Java volatile是否需要同步访问?

来自分类Dev

在Java中,“同步”是否等效于“同步(this)”?

来自分类Dev

指针地址交换在C ++中是否总是原子操作?

来自分类Dev

Sequelize中的原子操作

来自分类Dev

Sequelize中的原子操作

来自分类Dev

当使用两个线程在C / C ++中操作不同的数组索引时,是否需要同步?

来自分类Dev

在Java并发编程中,是否需要在读取值时使用同步?

来自分类Dev

java.util.concurrent.ConcurrentHashMap.putIfAbsent是否需要在同步块中?

来自分类Dev

Couchbase(Java SDK)中Add操作的原子性

来自分类Dev

Couchbase(Java SDK)中的Add操作的原子性

来自分类Dev

原子操作线程安全-我需要“镜像”原子读取吗?

来自分类Dev

Java:引用同步对象是否需要volatile / final?

来自分类Dev

ConcurrentHashMap是否需要包装在同步块中?

来自分类Dev

在ArrayList中设置元素的值时是否需要同步

来自分类Dev

Java ConcurrentHashMap操作原子性

来自分类Dev

C中的“ ++”操作是原子的吗?

来自分类Dev

CUDA中的原子操作失败

来自分类Dev

Java中是否有任何原子方法的实现?

来自分类Dev

使用同步时,不需要原子引用

来自分类Dev

是否需要此同步块?

来自分类Dev

是否需要此同步块?

来自分类Dev

Java Atomics是否只需要相对于VM的原子性

来自分类Dev

Java-在同步的setter函数期间调用同步的getter函数是否是操作共享变量的正确方法?

来自分类Dev

Java-在同步的setter函数期间调用同步的getter函数是否是操作共享变量的正确方法?

来自分类Dev

MongoDB GridFS中是否为CRUD操作保留了原子性?

来自分类Dev

Go中的原子操作是否确保其他变量对其他线程可见?

Related 相关文章

  1. 1

    Java中的size(),put(),remove(),get()原子是否同步HashMap?

  2. 2

    在Java中,是否需要将简单分配同步到静态?

  3. 3

    Java中的CountDownLatch是否需要其他同步?

  4. 4

    Java volatile是否需要同步访问?

  5. 5

    在Java中,“同步”是否等效于“同步(this)”?

  6. 6

    指针地址交换在C ++中是否总是原子操作?

  7. 7

    Sequelize中的原子操作

  8. 8

    Sequelize中的原子操作

  9. 9

    当使用两个线程在C / C ++中操作不同的数组索引时,是否需要同步?

  10. 10

    在Java并发编程中,是否需要在读取值时使用同步?

  11. 11

    java.util.concurrent.ConcurrentHashMap.putIfAbsent是否需要在同步块中?

  12. 12

    Couchbase(Java SDK)中Add操作的原子性

  13. 13

    Couchbase(Java SDK)中的Add操作的原子性

  14. 14

    原子操作线程安全-我需要“镜像”原子读取吗?

  15. 15

    Java:引用同步对象是否需要volatile / final?

  16. 16

    ConcurrentHashMap是否需要包装在同步块中?

  17. 17

    在ArrayList中设置元素的值时是否需要同步

  18. 18

    Java ConcurrentHashMap操作原子性

  19. 19

    C中的“ ++”操作是原子的吗?

  20. 20

    CUDA中的原子操作失败

  21. 21

    Java中是否有任何原子方法的实现?

  22. 22

    使用同步时,不需要原子引用

  23. 23

    是否需要此同步块?

  24. 24

    是否需要此同步块?

  25. 25

    Java Atomics是否只需要相对于VM的原子性

  26. 26

    Java-在同步的setter函数期间调用同步的getter函数是否是操作共享变量的正确方法?

  27. 27

    Java-在同步的setter函数期间调用同步的getter函数是否是操作共享变量的正确方法?

  28. 28

    MongoDB GridFS中是否为CRUD操作保留了原子性?

  29. 29

    Go中的原子操作是否确保其他变量对其他线程可见?

热门标签

归档