在32位的机器上对long型变量进行加减操作并发隐患
- 发布
- 分类
- Java
- 篇幅
- 266 字 / 1 分钟
- 阅读
- 635
常听人说,在32位的机器上对long型变量进行加减操作存在并发隐患,到底是不是这样呢?
非volatile类型的long和double型变量是8字节64位的,32位机器读或写这个变量时得把人家咔嚓分成两个32位操作,可能一个线程读了某个值的高32位,低32位已经被另一个线程改了。所以官方推荐最好把long\double 变量声明为volatile或是同步加锁synchronize以避免并发问题。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.7