理解發生在一致性之前
在Java 語言規範(JLS) 第17 章中,「發生在一致性之前」定義為如下所示:
「如果對於A 中的所有讀取r,其中W(r) 是r 看到的寫入操作,則不是hb(r , W(r)) 或A 中存在寫入w,使得w.v = r.v 且hb(W(r), w) 和hb(w, r)。任何讀取都不應該看到稍後發生的寫入,並且任何寫入後面都不應該出現看到較早值的讀取。
您的問題
你的第三個問題:
執行順序中操作左側的數字代表操作執行的順序。您的第四個問題:
是的,您對r2 和r1 都看到初始寫入0 因為A 和B不是易失性字段的理解是正確的。非揮發性欄位可以儲存在暫存器中,這可能會導致暫時的不一致。您的第五和第六個問題:
所描述的情況在第二個執行順序中,讀取會看到稍後發生的寫入,這可能發生在現實世界的多執行緒場景中。例如:以上是在 Java 語言規範的上下文中,「發生在一致性之前」是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!