Voliate的底層原理

2021-08-16 11:34:37 字數 371 閱讀 1895

jvm 底層是通過乙個叫做「記憶體屏障」的東西來完成。記憶體屏障,也叫做記憶體柵欄,是一組處理器指令,用於實現對記憶體操作的順序限制。

所以能禁止指令重排序,即volatile能在一定程度上保證有序性。

一定程度理解如下:

語句1和語句2的順序不保證;

語句4和語句5的順序不保證;

但是無論怎麼重排,語句3前面的不被允許排到語句3後面

x = 2; //語句1

y = 0; //語句2

flag = true; //語句3 flag是被volatile修飾的

x = 4; //語句4

y = -1; //語句5

參考如下

volatile禁止指令重排-實際應用?

HashMap的底層原理

簡單來說,hashmap的實現是 陣列 鍊錶 陣列是hashmap的主體,鍊錶則是主要為了解決雜湊衝突而設立的。對於查詢來說,陣列更加的方便 對於刪除,修改,鍊錶更加的方便。hash表的本質就是乙個陣列,陣列中的每乙個元素被稱為乙個箱子 bin 箱子中存放的是鍵值對。儲存過程如下 根據k值計算他的雜...

HashMap的底層原理

在jdk1.6和jdk1.7中hashmap是桶加鍊表的實現方式.hashmap的底層結構就是乙個陣列,陣列中每乙個元素又是乙個鍊錶.當新增乙個元素 key value 的時候,根據key的hash值 或者說呼叫key的hashcode方法 來確定插入到哪乙個桶中 確定插入陣列中的位置 當桶中有多個...

Spring ioc的底層原理

ioc inversion of control,控制反轉 乙個類的某個屬性需要使用時,需要有本類自己初始化。而在spring類的某些屬性不用自己初始化而交給了spring來管理。這樣的轉換就是ioc思想。spring的ioc思想是,spring的ioc容器在初始化的時候就根據配置對相應的物件進行初...