个人业务场景:在处理批量插入数据库操做时,发现一个线程(通常是主线程)处理太慢,因此想到用线程池管理多个线程进行处理数据。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