Executors線程池使用

個人業務場景:在處理批量插入數據庫操做時,發現一個線程(通常是主線程)處理太慢,因此想到用線程池管理多個線程進行處理數據。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 

相關文章
相關標籤/搜索