天天看點

Java中ThreadPoolExecutor的參數了解

一、使用executors建立線程池

之前建立線程的時候都是用的executors的newfixedthreadpool(),newsinglethreadexecutor(),newcachedthreadpool()這三個方法。當然executors也是用不同的參數去new threadpoolexecutor

建立線程數固定大小的線程池。 由于使用了linkedblockingqueue是以maximumpoolsize 沒用,當corepoolsize滿了之後就加入到linkedblockingqueue隊列中。每當某個線程執行完成之後就從linkedblockingqueue隊列中取一個。是以這個是建立固定大小的線程池。

建立線程數為1的線程池,由于使用了linkedblockingqueue是以maximumpoolsize 沒用,corepoolsize為1表示線程數大小為1,滿了就放入隊列中,執行完了就從隊列取一個。

建立可緩沖的線程池。沒有大小限制。由于corepoolsize為0是以任務會放入synchronousqueue隊列中,synchronousqueue隻能存放大小為1,是以會立刻新起線程,由于maxumumpoolsize為integer.max_value是以可以認為大小為2147483647。受記憶體大小限制。

二、使用threadpoolexecutor建立線程池

threadpoolexecutor的構造函數

參數:

任務執行順序:

threadpoolexecutor預設有四個拒絕政策:

當然可以自己繼承rejectedexecutionhandler來寫拒絕政策.