現代作業系統是多處理器,每個處理器都有自己的緩存,這些緩存不是即時與記憶體交換資訊。因此,cpu的快取資料可能與另一個cpu的快取資料不一致。這樣,在多執行緒開發中,可能會發生異常行為作業系統的底層為這些問題提供了一些記憶體屏障來解決這些問題。
1、LoadLoad屏障
對於這樣的語言Load1, LoadLoad2,在Load2和後續讀取操作中讀取的資料被存取之前,保證Load1讀取的數據被讀取。
2、StoreStore屏障
關於這樣的語言Store1,StoreStore,Store2,在Store2和之後的寫作執行之前,保證Store1的寫作操作可以看到其他處理器。
3、LoadStore屏障
對於這樣的語言Load1,LoadStore,Store2,在Store2和後續寫作作業執行之前,保證Load1讀取的資料被讀取。
4、StoreLoad屏障
對於這樣的語言Store1,StoreLoad;Load2,在Load2和後續的所有閱讀操作實作之前,保證Store1的輸入可以看到所有處理器。 其費用是四種屏障中(沖刷緩衝器,清空無效化佇列)。在大多數處理器的實作中,此屏障是萬能屏障,兼具其他三種記憶體屏障功能。
Java的基本資料型別分為:
1、整數型,用來表示整數的資料型別。
2、浮點型,用來表示小數的資料型別。
3、字元類型,字元類型的關鍵字是「char」。
4、布林類型,是表示邏輯值的基本資料型別。
以上是java記憶體屏障有什麼類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!