1 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
這<task:executor id="taskExecutor" pool-size="20" />
是一個(gè)無(wú)界的任務(wù)隊(duì)列。這是默認(rèn)的。
這task-executor="taskExecutor" fixed-rate="50"
意味著不會(huì)阻塞調(diào)度程序的線(xiàn)程,并且調(diào)度程序每 50 毫秒啟動(dòng)一次新的輪詢(xún)!它的發(fā)生確實(shí)與publishChannel
內(nèi)容無(wú)關(guān)。我的意思是新任務(wù)總是被放入taskExecutor
隊(duì)列中。
如果下游進(jìn)程確實(shí)足夠長(zhǎng),則20
執(zhí)行器的所有線(xiàn)程都會(huì)很忙,并且任務(wù)的內(nèi)部隊(duì)列將會(huì)增長(zhǎng)。這就是內(nèi)存泄漏最嚴(yán)重的地方。
1 秒/ 50 毫秒 = 每秒 20 個(gè)任務(wù)。
如果 中沒(méi)有消息publishChannel
,我會(huì)說(shuō)任務(wù)執(zhí)行器中的所有線(xiàn)程都將忙于等待 5 秒超時(shí)。那么,任務(wù)的完成率是多少呢?20 active tasks / 5000 millis to wait for their finish = 4 per second
。
這個(gè)故事與4 個(gè)線(xiàn)程無(wú)關(guān),而是在實(shí)際情況下我們能夠以多快的速度耗盡任務(wù)隊(duì)列。
添加回答
舉報(bào)