ExecutorService executorService=Executors.newFixedThreadPool(10);
CompletionService completionService=new ExecutorCompletionService(executorService);
for (int i=0;i<10;i++){
int finalI = i;
completionService.submit(new Callable() {
@Override
public Object call() throws Exception {
System.out.println(finalI);
return null;
}
});
}
结果:
0
3
1
4
5
2
6
7
8
9
为什么要批量执行? 看下面的代码说明:
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread1");
}
});
thread1.start();
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread2");
}
});
thread2.start();
执行结果:
thread1
thread2
看到上面的这个结果, 如果是高并发的情况下其实已经失去了意义, 其结果都是从上到下执行