在Java中,写长和双写不是原子的吗?

2022-09-01 05:47:01

读取和写入单个变量是原子的(语言保证!),除非该变量的类型为 long 或 double。

我正在阅读课程的幻灯片,我发现它写得很好。该课程是关于并发的。

谁能向我解释为什么写长或双精度不是原子操作?这真的让我大吃一惊。


答案 1

它不是原子的,因为它是机器代码级别的多步骤操作。也就是说,长线和双倍比处理器的字长长。


答案 2

只是为了澄清Java的情况,双精度和长整型不会以原子方式读取或写入,除非它们被声明volatile

JLS - 双倍和长不原子治疗


推荐