这个arraylist里,add了很多,我们通过主函数把这些add的内容全部打印了出来。
这个里面list里add的并不算很多,如果很多的话,那么将会很费时间。
那么当任务列表比较大的时候,需要将任务进行拆分。
新加一个静态类Task
然后原来的主函数变成了:
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 当任务列表很大,单个任务比较大的时候,需要将任务进行拆分
ExecutorService pool = Executors.newFixedThreadPool(3);
List<Future> list = new ArrayList<>();
int size = urls.size();
int groupSize = 10;
int groupCount = (size - 1) / groupSize + 1;
//任务拆分
for (int i = 0; i < groupCount - 1; i++) {
int leftIndex = groupSize * i;
int rightIndex = groupSize * (i + 1);
Future<String> future = pool.submit(new Task(leftIndex, rightIndex));
list.add(future);
}
int leftIndex = groupSize * (groupCount - 1);
int rightIndex = size;
Future<String> future = pool.submit(new Task(leftIndex, rightIndex));
list.add(future);
//foreach遍历结果
for (Future<String> item : list) {
System.out.println(item.get());
}
/* 用 for 循环遍历结果
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).get());
}*/
}
原来add的数据多了 ,add了22个,便于展示,运行结果如下: