探究invokeAll()方法
背景:在用ExecutorService做了一个多线程查询数据并导出之后,对它的invokeAll()方法产生了一个想法,用它获取到的结果是否是有序的呢?
先上代码
package com.mezjh.blog.thread;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
/**
* 探究 ExecutorService 的 invokeAll()方法 是否具有执行顺序
* 简单的记录一下...
* @author ZJH
* @date 2020/9/16 15:36
*/
public class OrderThread {
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(10);
List<Callable<Integer>> tasks = new ArrayList<>();
for (int i = 0;i < 10;i++) {
//构造了10个线程,分别赋值0-9
tasks.add(new Mytask(i));
}
List<Future<Integer>> futures = executorService.invokeAll(tasks);
if (futures != null && futures.size() > 0) {
futures.stream().forEach(res -> {
try {
System.</