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();
}
}