個人業務場景:在處理批量插入數據庫操做時,發現一個線程(通常是主線程)處理太慢,因此想到用線程池管理多個線程進行處理數據。html
Java經過Executors提供四種線程池,分別爲: 數據庫
一、newSingleThreadExecutor 緩存
建立一個單線程化的線程池,它只會用惟一的工做線程來執行任務,保證全部任務按照指定順序(FIFO, LIFO, 優先級)執行。併發
二、newFixedThreadPool 線程
建立一個定長線程池,可控制線程最大併發數,超出的線程會在隊列中等待。rest
三、newScheduledThreadPool htm
建立一個可按期或者延時執行任務的定長線程池,支持定時及週期性任務執行。 blog
四、newCachedThreadPool接口
建立一個可緩存線程池,若是線程池長度超過處理須要,可靈活回收空閒線程,若無可回收,則新建線程。 隊列
舉例:
// 定義3個線程處理數據
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);for (int i = 0; i < 100000 ; i++) {
fixedThreadPool.execute(() -> {
log.info("current process:" + i);
taskProcess(i);
});}
private void taskProcess(int i) {
log.info("start:::::");//處理你本身的業務邏輯(能夠是操做數據庫,也能夠經過restApi調用其餘服務接口)
log.info("start:::::" );
}
瞭解更多,能夠查看轉載:http://www.javashuo.com/article/p-nmhszvtq-mc.html