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 

相关文章
相关标签/搜索