執行緒池 初步認識 01

2021-10-07 12:42:37 字數 1186 閱讀 6823

二、好處

三、實現原理

期望: 每次任務提交的時候,都是當前執行的執行緒數大於等於核心執行緒數,此時不用獲取全域性鎖,即加入工作佇列。

四、通過threadpoolexecutor建立執行緒池

1. corepoolsize

2. maximumpoolsize

3. keepalivetime

4. unit

5. blockingqueueworkqueue

6. threadfactory threadfactory

7. rejectedexecutionhandler defaulthandler

自定義拒絕策略實現rejectedexecutionhandler介面,實現需要的場景。比如持久化拒絕的任務、記錄日誌等等。

五、提交任務到執行緒池的方法

}});

提交不需要返回值的任務,無法判斷任務是否被執行緒池執行成功。

(二)、 通過submit

2.通過提交callable

});3.  runnable 和 callable 的區別

}callable

}- 可以看出,call()方法是有返回值的,而且可以引發異常。run沒有返回值,也不能引發異常(除非未經檢查的異常-runtimeexception的子類)。

4.如果執行的任務需要返回結果,使用callable。

(三)、兩種執行方法的區別

六、獲取返回結果

(三)、invokeall 返回所有任務的執行結果,該方法的執行效果也是阻塞執行的,要把所有的結果都取回時再繼續向下執行。

七、關閉執行緒池

2、shutdownnow()

1、2 兩個方法的原理:

3、awaittermination()

八、配置執行緒池

選擇:依賴資料庫連線的任務,因為執行緒提交sql後需要等待資料庫返回結果,等待的時間越長,則cpu空閒時間就越長,那麼執行緒數應該設定的越大,這樣才能更好低利用cpu。

建議:八、例子

}});

}});

list> futures =executorservice.invokeall(callables);

}executorservice.shutdown();

while (!service.awaittermination(1, timeunit.seconds))

執行緒核心物件初步認識

執行緒核心物件 執行緒核心物件初步認識 執行緒核心物件就是乙個包含了執行緒狀態資訊的資料結構。每一次對createthread函式的成功呼叫,系統就會在內部為新的執行緒分配乙個核心物件。系統提供的管理執行緒的函式其實就是依靠訪問執行緒核心物件來實現管理的。執行緒核心物件的基本成員 3.1.1核心物件...

執行緒池01 執行緒池基礎知識

執行緒池的執行邏輯如下 核心引數 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,threadfactory ...

執行緒池的簡單認識

executor框架 執行緒池的幾種狀態 執行緒池原理 執行緒池儲存任務的queue 最大執行緒數 newfixedthreadpool linkedblockingqueue 使用者指定 newcachedthreadpool synchronousqueue integer.max value ...