V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
guyeuro
V2EX  ›  问与答

Java : 64 位 JVM 下, long 和 double 是原子操作吗?

  •  
  •   guyeuro · Sep 1, 2017 · 3272 views
    This topic created in 3160 days ago, the information mentioned may be changed or developed.

    64 位 JVM 下,long 和 double 是原子操作吗?

    5 replies    2017-09-01 17:53:06 +08:00
    rwecho
        1
    rwecho  
       Sep 1, 2017
    原子操作是什么意思?

    i++ 在多线程的情况下不是原子操作. 需要做锁的处理
    你是说这个吗?
    guyeuro
        2
    guyeuro  
    OP
       Sep 1, 2017
    @rwecho

    set get i++
    watzds
        3
    watzds  
       Sep 1, 2017 via Android
    据说不一定,反正想要原子就加 volatile
    skyleft
        4
    skyleft  
       Sep 1, 2017
    32 和 64 都不保证是
    要加 volatile 才是
    skyleft
        5
    skyleft  
       Sep 1, 2017   ❤️ 1
    之所以是不一定 是因为不同的 jvm 有不同的实现 用的最多的 sun hotspot 应该不保证这点
    但是 oracle 鼓励在 64 位架构上 jvm 对 long 和 double 的 write 一次完成

    具体参考 http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5633 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 08:35 · PVG 16:35 · LAX 01:35 · JFK 04:35
    ♥ Do have faith in what you're doing.