1. 程式人生 > >執行緒池中的坑

執行緒池中的坑

1、Spring的執行緒池定義如下


    <bean id="threadPoolExecutor"
          class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="3"/>
        <property name="maxPoolSize" value="50"/>
        <property name="queueCapacity" value="300"/>
    </bean>

2、如果服務端有多個業務A,B公用執行緒池,如果A,B沒有相互依賴,則沒啥問題,一旦A,B 有依賴,則可能出現系統掛住。

因為可能執行緒池被A請求佔滿,A請求依賴B,而B一直在排隊,所以出現死迴圈。

3、需要啟動一個執行緒對執行緒池進行監控,保證執行緒池健康的執行。(重要)比如可以列印日誌,然後在視覺化

如果解決這種問題

將執行緒池進行隔離,建立多個執行緒池。

執行緒池的排程很消耗CPU,因此可以根據業務需求而選擇合理的使用執行緒池。