[英]What is the differences between volatile and static keyword?
我認為您誤解了static
volatile
。
static
只是關於整個類型具有單個字段。 它與線程無關-只是類型是一個字段( static
)還是該類型的每個實例一個字段(non static
)。
volatile
就是當一個線程的更改在其他線程中可見時所能保證的。 這與字段是否為靜態無關。 從JLS的8.3.1.4節開始 :
Java編程語言允許線程訪問共享變量(第17.1節)。 通常,為確保共享變量得到一致且可靠的更新,線程應通過獲取通常對這些共享變量強制互斥的鎖來確保其專有使用此類變量。
Java編程語言提供了第二種機制,易失性字段,它比出於某些目的的鎖定更方便。
字段可以聲明為volatile,在這種情況下,Java內存模型可確保所有線程看到的變量值都是一致的(第17.4節)。
( 第17.4節有很多更多的細節。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.