做微商網(wǎng)站制作公司注冊(cè)
暑期實(shí)習(xí)面試阿里Java后端崗位的一面的面經(jīng)。
主要拷打了項(xiàng)目+Java 集合+Java并發(fā)+網(wǎng)絡(luò)+mysql,一場面試大概問了 20 個(gè)題目,問的還是比較基礎(chǔ),不算太難。
問題記錄
簡歷上有兩個(gè)項(xiàng)目,選一個(gè)你比較熟悉的介紹
(略)
項(xiàng)目用到了哪個(gè)線程實(shí)現(xiàn)類?
用了ScheduledThreadPool這個(gè)線程實(shí)現(xiàn)類
為什么要使用這個(gè)線程類?
這個(gè)實(shí)現(xiàn)類可以設(shè)置定期的執(zhí)行任務(wù),它支持定時(shí)或周期性執(zhí)行任務(wù),比如每隔 10 秒鐘執(zhí)行一次任務(wù),我通過這個(gè)實(shí)現(xiàn)類設(shè)置定期執(zhí)行任務(wù)的策略。
你還了解別的線程實(shí)現(xiàn)類嗎?
除了這個(gè)之外,還有就是newSingleThreadExecuter,別的就不太熟悉了。
補(bǔ)充:
除了 ScheduledThreadPool 線程池之外,還有 4 種常見的線程池如下:
-
FixedThreadPool:它的核心線程數(shù)和最大線程數(shù)是一樣的,所以可以把它看作是固定線程數(shù)的線程池,它的特點(diǎn)是線程池中的線程數(shù)除了初始階段需要從 0 開始增加外,之后的線程數(shù)量就是固定的,就算任務(wù)數(shù)超過線程數(shù),線程池也不會(huì)再創(chuàng)建更多的線程來處理任務(wù),而是會(huì)把超出線程處理能力的任務(wù)放到任務(wù)隊(duì)列中進(jìn)行等待。而且就算任務(wù)隊(duì)列滿了,到了本該繼續(xù)增加線程數(shù)的時(shí)候,由于它的最大線程數(shù)和核心線程數(shù)是一樣的,所以也無法再增加新的線程了。
-
CachedThreadPool:可以稱作可緩存線程池,它的特點(diǎn)在于線程數(shù)是幾乎可以無限增加的(實(shí)際最大可以達(dá)