【2023最新版本】Java全階段面試題匯總,涵蓋:初級(jí)-中級(jí)-高級(jí)!學(xué)完即可面

1.線程池的核心參數(shù)都有什么?
1.coresize 核心線程數(shù)
2.maximumsize 最大線程數(shù)
3.keepAliveTime(生存時(shí)間嗎,針對救急線程)
4.unit 時(shí)間單位(針對救急線程)
5.runnableTaskQueue(任務(wù)隊(duì)列)
- ArrayBlockingQueue:是一個(gè)基于數(shù)組結(jié)構(gòu)的有界阻塞隊(duì)列,此隊(duì)列按FIFO(先進(jìn)先出)原則對元素進(jìn)行排序。
- LinkedBlockingQueue:一個(gè)基于鏈表結(jié)構(gòu)的阻塞隊(duì)列,此隊(duì)列按FIFO排序元素,吞吐量通常要高于ArrayBlockingQueue。靜態(tài)工廠方法Executors.newFixedThreadPool()使用了這個(gè)隊(duì)列。
- SynchronousQueue:一個(gè)不存儲(chǔ)元素的阻塞隊(duì)列。每個(gè)插入操作必須等到另一個(gè)線程調(diào)用移除操作,否則插入操作一直處于阻塞狀態(tài),吞吐量通常要高于Linked-
- BlockingQueue,靜態(tài)工廠方法Executors.newCachedThreadPool使用了這個(gè)隊(duì)列。
- PriorityBlockingQueue:一個(gè)具有優(yōu)先級(jí)的無限阻塞隊(duì)列。
6.threadfactory(線程工廠,起名稱)
7.handle(拒絕策略)
當(dāng)隊(duì)列和線程池都滿了,說明線程池處于飽和狀態(tài) ,那么必須采取一種策略處理提交的新任務(wù)。這個(gè)策略默認(rèn)情況下是 AbortPolicy ,表示無法
處理新任務(wù)時(shí)拋出異常。在 JDK 1.5 中 Java 線 程池框架提供了以下 4 種策略:
AbortPolicy:直接拋出異常。
CallerRunsPolicy:只用調(diào)用者所在線程來運(yùn)行任務(wù)。
DiscardOldestPolicy:丟棄隊(duì)列里最近的一個(gè)任務(wù),并執(zhí)行當(dāng)前任務(wù)。
DiscardPolicy:不處理,丟棄掉。
maximumPoolSize - corePoolSize = 救急線程數(shù)
注意 : 救急線程在沒有空閑的核心線程和任務(wù)隊(duì)列滿了的情況才使用救急線程
標(biāo)簽: