gpt4 book ai didi

java - java中非 volatile 变量的寄存器分配

转载 作者:行者123 更新时间:2023-11-30 06:31:16 26 4
gpt4 key购买 nike

我在 java 中有一个读取器和写入器线程,下面是代码片段。

int volatile ready = false;
int var1;
int var2;
int var3;

T1:
while(!ready);
print var1;
print var2;
print var3;


T2:
var1 = 1;
var2 = 2;
var3 = 3;
ready = true;

是否有可能将var1、var2和var3分配在T2中的寄存器中。在 C++ 中,通过将 var1、var2 和 var3 标记为 volatile 来防止这种情况。但在Java中,这些变量是否也需要标记为 volatile ?

最佳答案

But in Java, do these variable need to be marked as volatile too?

如果您只关心它们的值是否对 T1 可见,则不,它们不需要是 volatile

由于ready volatile JSR 133保证 T2 的写入和 T1 的读取之间发生先行关系。

详细说明请参见常见问题:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#volatile

关于java - java中非 volatile 变量的寄存器分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com