訪問其餘系統接口httpClient,可是都是同步的,同步意味當前線程是阻塞的,只有本次請求完成後才能進行下一次請求;異步意味着全部的請求能夠同時塞入緩衝區,不阻塞當前的線程;spring
httpClient請求,訪問其餘系統可能無響應,鎖死,訪問請求上線種種問題,這些問題就像蒼蠅嗡嗡嗡的在你耳邊,那麼解決他能夠設置超時時間,可是訪問一個接口將近1分鐘,這個是不該該的,因此仍是要異步請求其餘系統的接口,咱們能夠使用多線程來作,創建一個線程池,只指定10個線程,而後調用方法。(好主意)多線程
下面是舉個springmvc的例子:mvc
1.往springmvc裏添加線程池app
application.xml裏添加 xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 核心線程數 --> <property name="corePoolSize" value="10" /> <!-- 最大線程數 --> <property name="maxPoolSize" value="10" /> <!-- 隊列最大長度 --> <property name="queueCapacity" value="500" /> <!-- 線程池維護線程所容許的空閒時間,默認爲60s --> <property name="keepAliveSeconds" value="200" /> </bean>
2.操做:異步
//自定義線程池: @Resource private TaskExecutor taskExecutor; try { taskExecutor.execute(new Runnable() { public void run() { //這裏編寫處理業務代碼
//注意方法傳遞參數的時候,儘可能使用基本類型的值。 } }); } catch (Exception e) { e.printStackTrace(); }