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容器在初始化的時候就根據配置對相應的物件進行初...