【執行緒池】在介面效能時,尤其注重了執行緒池的使用。不建議使用executors,原因在於它裡面的很多方法預設使用的都是無界的linkedblockingqueue,高併發情況下,無界佇列很容易導致oom,而oom會導致所有請求都無法處理,這是災難性問題。因此建議使用threadpoolexecutor來建立執行緒池管理我們的執行緒。執行緒池的7個引數配置有很大考究,在使用過程中注意分析自己的業務場景,進行合理的配置。總的可以總結為以下兩點:
其一:小執行緒,大阻塞佇列,意味著可以提高訪問介面的吞吐量;
其二:大執行緒,小阻塞佇列,意味著可以提高cpu利用率;
總之,我們視自己的實際應用場景而選擇最為合理的核心執行緒數、最大執行緒數、阻塞佇列以及拒絕策略,保證我們的問題得到最優的解決。
JDK的執行緒池和工作機制
在jdk中,所有預定義的執行緒池都是繼承自父類threadpoolexecutor 其構造方法如下 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,bloc...
執行緒池工作原理
執行緒池狀態的切換 執行緒池關鍵類的uml圖 執行緒池就是把任務提交和任務執行解耦。首先看一下執行緒池的使用 public static void main string args throws interruptedexception 2,提交任務 es.shutdown 3,執行緒池關閉 跟進原...
什麼是執行緒池?執行緒池的工作原理和使用執行緒池的好處
乙個執行緒池管理了一組工作執行緒,同時它還包括了乙個用於放置等待執行任務的任務佇列 阻塞佇列 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0.當任務提交給執行緒池之後的處理策略如下 1 如果此時執行緒池中的數量小於corepoolsize 核心池的大小 即使執行緒池中的執行緒都處於空閒狀態...