Java中線程池的使用

2021-09-11 17:59:36 字數 1383 閱讀 7503

1、threadpoolexecutor類構造器可以設定的引數:

核心執行緒數:如果執行緒池中的執行緒數小於核心執行緒數,當新任務提交時,會新建乙個執行緒去處理該任務。

最大執行緒數:如果執行緒池中的執行緒數大於等於核心執行緒數,但是小於最大執行緒數,當新任務提交時,會將任務加入任務佇列,如果任務佇列已滿,則新建乙個執行緒去處理該任務。

保持存活時間的單位

任務佇列

允許核心執行緒在空閒時被**,預設false。

2、executors類下的幾個建立執行緒池的靜態方法:

new threadpoolexecutor(nthreads, nthreads, 0l, timeunit.milliseconds, new linkedblockingqueue());

// 任務佇列是linkedblockingqueue,鍊錶阻塞佇列

new threadpoolexecutor(1, 1, 0l, timeunit.milliseconds, new linkedblockingqueue());

// 任務佇列是linkedblockingqueue,鍊錶阻塞佇列

new threadpoolexecutor(0, integer.max_value, 60l, timeunit.seconds, new synchronousqueue());

// 任務佇列是synchronousqueue,是乙個沒有資料緩衝的blockingqueue,

// 乙個元素不會在synchronousqueue 裡面長時間停留,一旦有了插入執行緒和移除執行緒,

// 元素很快就從插入執行緒移交給移除執行緒。也就是說這更像是一種通道(管道),

// 資源從乙個方向快速傳遞到另一方 向。顯然這是一種快速傳遞元素的方式,

// 也就是說在這種情況下元素總是以最快的方式從插入著(生產者)傳遞給移除著(消費者),

// 這在多工佇列中是最快處理任務的方式。

*/

new threadpoolexecutor(corepoolsize, integer.max_value, 0, nanoseconds,new delayedworkqueue());

// 任務佇列是delayedworkqueue,延時佇列,底層是優先順序佇列

// 使用優先順序佇列delayedworkqueue,保證新增到佇列中的任務,

// 會按照任務的延時時間進行排序,延時時間少的任務首先被獲取。

python 中線程池的使用

python中已經有了threading模組,為什麼還需要執行緒池呢,執行緒池又是什麼東西呢?在介紹執行緒同步的訊號量機制的時候,舉得例子是爬蟲的例子,需要控制同時爬取的執行緒數,例子中建立了20個執行緒,而同時只允許3個執行緒在執行,但是20個執行緒都需要建立和銷毀,執行緒的建立是需要消耗系統資源...

java中線程池引數設定

本文主要介紹執行緒池是解決了哪些問題以及執行緒池中 的corepoolsize 核心執行緒數 queuecapacity 等待佇列的長度 maximumpoolsize 最大核心執行緒數 本文不會對執行緒池各個引數介紹,假定你已經了解了執行緒池各個引數的含義。當前實際應用中,經常會遇到單個請求處理時...

c 中線程池

只有乙個前台執行緒在執行,應用程式的程序就在執行,如果多個前台執行緒在執行,但是main方法結束了,應用程式的程序任然是執行的,指導所有的前台執行緒完成其任務為止。在預設情況下,用thread建立的執行緒都是前台執行緒,執行緒池中的執行緒總是後台執行緒。在用thread類建立執行緒的時候,可以設定i...