我在java中有一個讀寫器線程,下面是代碼片段。在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;
是否有可能在T2的寄存器中分配var1,var2和var3。 在C++中,這是通過將var1,var2和var3標記爲volatile來防止的。 但是在Java中,這些變量是否也需要標記爲volatile?
'volatile'是不是在C線程同步機制++;即使對所有變量都使用volatile,這種模式在C++中也是不安全的。 – user2357112
另外,您的T1 *在設置了ready標誌時停止*打印變量,而不是在打印之前等待T2設置標誌。 – user2357112
編輯了問題 – KodeWarrior