soa架構(gòu)和微服務(wù)架構(gòu)的區(qū)別 dubbo線(xiàn)程池滿(mǎn)了會(huì)超時(shí)嗎?
dubbo線(xiàn)程池滿(mǎn)了會(huì)超時(shí)嗎?在dubbo調(diào)用過(guò)程中被調(diào)用方有兩個(gè)線(xiàn)程池:io線(xiàn)程池,業(yè)務(wù)線(xiàn)程池。這也是dubbo調(diào)優(yōu)的點(diǎn)。配置信息:Dispatcherall 所有消息都派發(fā)到線(xiàn)程池,包括請(qǐng)求,響應(yīng)
dubbo線(xiàn)程池滿(mǎn)了會(huì)超時(shí)嗎?
在dubbo調(diào)用過(guò)程中被調(diào)用方有兩個(gè)線(xiàn)程池:io線(xiàn)程池,業(yè)務(wù)線(xiàn)程池。
這也是dubbo調(diào)優(yōu)的點(diǎn)。
配置信息:
Dispatcher
all 所有消息都派發(fā)到線(xiàn)程池,包括請(qǐng)求,響應(yīng),連接事件,斷開(kāi)事件,心跳等。
direct 所有消息都不派發(fā)到線(xiàn)程池,全部在 IO 線(xiàn)程上直接執(zhí)行。
message 只有請(qǐng)求響應(yīng)消息派發(fā)到線(xiàn)程池,其它連接斷開(kāi)事件,心跳等消息,直接在 IO 線(xiàn)程上執(zhí)行。
execution 只請(qǐng)求消息派發(fā)到線(xiàn)程池,不含響應(yīng),響應(yīng)和其它連接斷開(kāi)事件,心跳等消息,直接在 IO 線(xiàn)程上執(zhí)行。
connection 在 IO 線(xiàn)程上,將連接斷開(kāi)事件放入隊(duì)列,有序逐個(gè)執(zhí)行,其它消息派發(fā)到線(xiàn)程池。
java線(xiàn)程池監(jiān)視線(xiàn)程、重啟線(xiàn)程?
線(xiàn)程池的地方在新增或者刪除線(xiàn)程的時(shí)候加一個(gè)debug信息。如果在命令行下面啟動(dòng)的話(huà)用ctrl break就可以看到當(dāng)前哪些線(xiàn)程在運(yùn)行了。。。
如何使用Spring開(kāi)發(fā)和監(jiān)控線(xiàn)程池服務(wù)?
第1步:創(chuàng)建Maven工程 下面是一個(gè)maven工程。(可以使用Maven或IDE的插件創(chuàng)建)。 第2步:添加依賴(lài)庫(kù) 將Spring的依賴(lài)添加到Maven的pom.xml文件中。 第3步:創(chuàng)建任務(wù)類(lèi) 創(chuàng)建一個(gè)實(shí)現(xiàn)Runnable接口的新TestTask類(lèi)。這個(gè)類(lèi)表示要執(zhí)行的任務(wù)?! 〉?步:創(chuàng)建TestRejectedExecutionHandler類(lèi) TestRejectedExecutionHandler類(lèi)實(shí)現(xiàn)了RejectedExecutionHandler接口。如果沒(méi)有空閑線(xiàn)程并且隊(duì)列超出限制,任務(wù)會(huì)被拒絕。這個(gè)類(lèi)處理被拒絕的任務(wù)?! 〉?步:創(chuàng)建ITestThreadPoolExecutorService接口 創(chuàng)建ITestThreadPoolExecutorService接口。(譯者注:這個(gè)接口的主要功能是通過(guò)設(shè)置的參數(shù)創(chuàng)建一個(gè)線(xiàn)程池) 第8步:創(chuàng)建ThreadPoolMonitorService類(lèi) ThreadPoolMonitorService類(lèi)實(shí)現(xiàn)了IThreadPoolMonitorService接口。這個(gè)類(lèi)用來(lái)監(jiān)控已創(chuàng)建的線(xiàn)程池。 第10步:創(chuàng)建Application類(lèi) 創(chuàng)建Application類(lèi)。這個(gè)類(lèi)運(yùn)行應(yīng)用程序?! 〉?1步:創(chuàng)建applicationContext.xml文件 第12步:創(chuàng)建線(xiàn)程池的另一方法 Spring提供的ThreadPoolTaskExecutor類(lèi)也可以創(chuàng)建線(xiàn)程池。