請你講講wait方法的底層原理

2021-09-25 03:51:00 字數 320 閱讀 6616

wait即object的wait()和notify()或者notifyall()一起搭配使用

wait方法會將當前執行緒放入wait set等待被喚醒

1.將當前執行緒封裝成objectwaiter物件node

2.通過objectmonitor::addwaiter方法將node新增到_waitset列表中

3.通過objectmonitor:exit方法釋放當前的objectmonitor物件,這樣其他競爭執行緒就可以獲取該objectmonitor物件

4.最終底層的park方法會掛起執行緒

notiry方法就是隨機喚醒等待池中的乙個執行緒

Voliate的底層原理

jvm 底層是通過乙個叫做 記憶體屏障 的東西來完成。記憶體屏障,也叫做記憶體柵欄,是一組處理器指令,用於實現對記憶體操作的順序限制。所以能禁止指令重排序,即volatile能在一定程度上保證有序性。一定程度理解如下 語句1和語句2的順序不保證 語句4和語句5的順序不保證 但是無論怎麼重排,語句3前...

HashMap的底層原理

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

HashMap的底層原理

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