参考链接:https://blog.csdn.net/bufanrong/article/details/90295576
功能背景:为提高性能,需要异步执行一个list的数据。
多线程处理过程概述: 利用ExecutorService创建线程池,代码如下:
newCachedThreadPool:可变尺寸线程池,这种方式的特点是:可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
newFixedThreadPool的参数指定了可以运行的线程的最大数目,超过这个数目的线程加进去以后,不会运行。其次,加入线程池的线程属于托管状态,线程的运行不受加入顺序的影响。
二者的区别就是在创建线程池对象的时候的参数不一样。
ExecutorService taskExecutor = Executors.newFixedThreadPool(2);//创建2个线程。
ExecutorService taskExecutor = Executors.newCachedThreadPool();//根据线程创建线程
int TOTAL_THREADS = 4;//线程数
//数据库中的100条数据;
List list =new ArrayList();
for (int i = 0; i <100 ; i++) {
list.add(i);
}
//Executors创建线程池new固定的10个线程
ExecutorService taskExecutor = Executors.newCachedThreadPool();
final CountDownLatch latch = new CountDownLatch(list.size());/