package com.jshan;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Test {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executorService = Executors.newFixedThreadPool(6);
Set<Callable<String>> callables = new HashSet<Callable<String>>();
System.out.println(1);
callables.add(new Callable<String>() {
public String call() throws Exception {
Thread.sleep(1000);
return "Task 1";
}
});
System.out.println(2);
callables.add(new Callable<String>() {
public String call() throws Exception {
Thread.sleep(1000);
return "Task 2";
}
});
System.out.println(3);
callables.add(new Callable<String>() {
public String call() throws Exception {
Thread.sleep(1000);
return "Task 3";
}
});
long start = System.currentTimeMillis();
List<Future<String>> result = executorService.invokeAll(callables);
System.out.println(System.currentTimeMillis()-start);
for(Future<String> r : result) {
System.out.println(r.get());
}
executorService.shutdown();
}
}

本文介绍如何利用Java的ExecutorService实现并发任务处理。通过创建固定大小的线程池,添加Callable任务并获取Future结果,展示了一种高效的任务调度方式。文章详细解释了invokeAll方法的使用,以及如何收集和打印所有任务的执行结果。
1404

被折叠的 条评论
为什么被折叠?



