線(xiàn)程池隊(duì)列滿(mǎn)了會(huì)發(fā)生什么 線(xiàn)程池的五個(gè)參數(shù)?
線(xiàn)程池的五個(gè)參數(shù)?Corepollsize:核心線(xiàn)程數(shù)。Maximumpoolsize:最大線(xiàn)程數(shù)。Keepalivetime:空閑線(xiàn)程的保留時(shí)間。Timeunit:空閑線(xiàn)程保留時(shí)間的單位。阻塞隊(duì)列&
線(xiàn)程池的五個(gè)參數(shù)?
Corepollsize:核心線(xiàn)程數(shù)。
Maximumpoolsize:最大線(xiàn)程數(shù)。
Keepalivetime:空閑線(xiàn)程的保留時(shí)間。
Timeunit:空閑線(xiàn)程保留時(shí)間的單位。
阻塞隊(duì)列<runnable>:阻塞隊(duì)列以存儲(chǔ)等待執(zhí)行的任務(wù)。
Threadfactory:用于創(chuàng)建線(xiàn)程的線(xiàn)程工廠(chǎng)。
Rejectedexecutionhandler:隊(duì)列已滿(mǎn)且任務(wù)量大于最大線(xiàn)程數(shù)時(shí)的異常處理策略。
dubbo線(xiàn)程池滿(mǎn)了會(huì)超時(shí)嗎?
在Dubbo調(diào)用期間,被叫方有兩個(gè)線(xiàn)程池:IO線(xiàn)程池和業(yè)務(wù)線(xiàn)程池。
這也是Dubbo調(diào)諧的重點(diǎn)。
配置信息:
dispatcher
所有消息都發(fā)送到線(xiàn)程池,包括請(qǐng)求、響應(yīng)、連接事件、斷開(kāi)連接事件、心跳等
所有直接消息都不會(huì)發(fā)送到線(xiàn)程池,而是直接在IO線(xiàn)程上執(zhí)行。
消息只有請(qǐng)求-響應(yīng)消息被發(fā)送到線(xiàn)程池。其他斷開(kāi)連接事件、心跳和其他消息直接在IO線(xiàn)程上執(zhí)行。
執(zhí)行只請(qǐng)求將消息發(fā)送到線(xiàn)程池,沒(méi)有響應(yīng)、響應(yīng)和其他斷開(kāi)連接事件、心跳和其他消息。它直接在IO線(xiàn)程上執(zhí)行。
在Io線(xiàn)程上,連接將斷開(kāi)連接事件放入隊(duì)列中,并按順序逐個(gè)執(zhí)行。其他消息被發(fā)送到線(xiàn)程池。
線(xiàn)程池滿(mǎn)了怎么辦?
與其盯著線(xiàn)程池看,不如看看問(wèn)題所在。
例如,任務(wù)太多,CPU太滿(mǎn),增加線(xiàn)程池是沒(méi)有用的。此時(shí)應(yīng)先加CPU,或加機(jī)。
如果CPU非常豐富,線(xiàn)程池上限被卡住,只需增加最大值。
如果任務(wù)執(zhí)行時(shí)間過(guò)長(zhǎng),并且“任務(wù)完成后請(qǐng)求返回”的設(shè)置不合適,導(dǎo)致用戶(hù)體驗(yàn)不佳,則系統(tǒng)應(yīng)設(shè)計(jì)為在任務(wù)啟動(dòng)后返回預(yù)定的Ping任務(wù)。
線(xiàn)程池處理流程是什么?
任務(wù)提交后,線(xiàn)程池首先確定線(xiàn)程數(shù)是否達(dá)到核心池大小。如果未達(dá)到線(xiàn)程數(shù),則創(chuàng)建一個(gè)核心線(xiàn)程來(lái)處理任務(wù);否則,執(zhí)行下一步;
然后線(xiàn)程池判斷任務(wù)隊(duì)列是否已滿(mǎn)。如果沒(méi)有,則將任務(wù)添加到任務(wù)隊(duì)列;否則,執(zhí)行下一步;
然后,由于任務(wù)隊(duì)列已滿(mǎn),線(xiàn)程池將判斷線(xiàn)程數(shù)是否達(dá)到最大值。否則,將創(chuàng)建一個(gè)非核心線(xiàn)程來(lái)處理該任務(wù);否則,將執(zhí)行飽和策略,并在默認(rèn)情況下引發(fā)rejectedexecutionexception異常。