千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

HashMap:
數(shù)據(jù)結(jié)構(gòu)是數(shù)組+鏈表+紅黑樹(JDK1.8引入紅黑樹),當(dāng)元素個數(shù)大于64并且鏈表上元素大于8轉(zhuǎn)為紅黑樹,當(dāng)鏈表個數(shù)大于8但是數(shù)組元素小于64,則進行數(shù)組擴容。當(dāng)樹中節(jié)點小于6又重新轉(zhuǎn)為數(shù)組+鏈表。
HashMap數(shù)組容量為2的整數(shù)倍,最大容量為2<<30,為int類型中最大的2的整數(shù)倍,擴容機制為原來長度的2倍。
HashMap在存入元素時,先獲取存入的key的hash值,與數(shù)組長度-1進行&運算,得到的值為在數(shù)組中的下標(biāo),得到下標(biāo)后判斷該位置是否有元素,有用鏈表鏈接,JDK1.7之前為頭插法,JDK1.8以后為尾插法。
線程池7大參數(shù):
核心線程,最大線程,閑置時間,時間單位,任務(wù)隊列,線程工廠,拒絕策略
執(zhí)行順序:
假設(shè)任務(wù)一直提交,線程池最開始先創(chuàng)建核心線程執(zhí)行任務(wù),達(dá)到核心線程數(shù)后將任務(wù)放入任務(wù)隊列,任務(wù)隊列滿載后再創(chuàng)建線程直到達(dá)到最大線程數(shù),此時任務(wù)提交將觸發(fā)拒絕策略,當(dāng)任務(wù)全部執(zhí)行完畢后,閑置時間到了后,線程池隨機銷毀線程直到核心線程數(shù)。
拒絕策略:
abortPolicy:直接拋出異常,終止程序
discardPolicy:丟棄新加入的任務(wù),源碼中是不對新加入的任務(wù)做任何處理
discardOldestPolicy:將任務(wù)隊列中最早加入的任務(wù)丟棄,將新的任務(wù)加入到任務(wù)隊列末尾
callerRunPolicy:將新的任務(wù)加入到線程中執(zhí)行。