ThreadPoolExecutor簡單介紹

2021-07-12 00:15:09 字數 790 閱讀 5930

在專案中如果使用發簡訊這個功能,一般會把發簡訊這個動作變成非同步的,因為大部分情況下,簡訊到底是傳送成功或者失敗,都不能影響主流程。當然像傳送mq訊息等操作也是可以封裝成非同步操作的。

如果想乙個操作變成非同步的,可以直接new thread,然後在run方法中實現業務操作即可。例如:

new thread(new runnable() 

});

但是這種方式有幾個缺點。

每次都會new乙個執行緒,執行完後銷毀,不能復用;

如果系統的併發量剛好比較大,需要大量執行緒,那麼這種每次new的方式會搶資源的。

我們可以使用jdk1.5中的threadpoolexecutor來封裝非同步操作。threadpoolexecutor的好處是可以做到執行緒復用,並且使用盡量少的執行緒去執行更多的任務,效率和效能都相當不錯。demo**如下:

public

class threadpool

}

public

threadpoolexecutor(int corepoolsize,

int maximumpoolsize,

long keepalivetime,

timeunit unit,

blockingqueueworkqueue,

rejectedexecutionhandler handler)

使用threadpoolexecutor時,需要根據自己的業務情況,適當的指定引數值的大小。

ThreadPoolExecutor簡單理解與使用

檢視threadpoolexecutor的原始碼發現,其提供了4個構造方法,如下 其中典型使用 執行緒池會根據corepoolsize和maximumpoolsize自動地調整執行緒池大小 任務執行過程 1.提交新的任務時,判斷,是否達到了核心執行緒數量,如果達到,則建立乙個工作執行緒來執行任務 2...

SpringDataRedis簡單入門介紹

在實際開發中,開發的每乙個專案,每天都有大量的人訪問,對資料庫造成很大的訪問壓力,甚至是癱瘓。那如何解決呢?我們通常的做法有兩種 一種是資料快取 一種是網頁靜態化。我們今天討論第一種解決方案。springdataredis是spring大家族中的乙個成員,提供了在srping應用中通過簡單的配置訪問...

ThreadPoolExecutor使用小結

記錄一下那幾個引數的理解,網上說了亂七八糟,詳細看參考文件,很詳細很明白,沒什麼好說的。corepoolsize,maximumpoolsize,keepalivetime keepalivetime workqueue queue blocksize 執行執行緒後,會判斷數量是否超出corepoo...