簡體   English   中英

volatile和static關鍵字有什么區別?

[英]What is the differences between volatile and static keyword?

靜態變量為線程保留單個值,而volatile變量為所有線程保留單個值( 此處示例

大多數方案常量都聲明為靜態,並且所有線程的常量數據都將相同,因此為什么不將常量聲明為volatile

當我們可以在Java中使用volatile關鍵字時

我認為您誤解了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM