使用说明:
public static void eventSend(){
List<String> list = Arrays.asList(new String[]{"1","2","3"});
List<String> result = new ArrayList<>();
ThreadPoolExecutor executor =null;
try {
executor = new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS,new LinkedBlockingQueue<>());
CompletionService<String> completionService = new ExecutorCompletionService<String>(executor);
for (String systemCode: list) {
String domain =systemCode;
completionService.submit(new Callable<String>(){
@Override
public String call() throws Exception {
System.out.println("start:"+domain);
Thread.sleep(10000);
System.out.println("domain:"+domain);
return domain;
}
});
}
System.out.println("循环完成");
for (int i=0;i<list.size();i++){
System.out.println("获取结果开始"+i);
Future<String> future = completionService.take();
result.add(future.get());
}
System.out.println("获取结果完成");
} catch (Exception e) {
e.printStackTrace();
}finally {
if(null!=executor){
executor.shutdown();
}
}
System.out.println("result:"+result.stream().collect(Collectors.joining(",")));
}
结果:
循环完成
start:1
start:2
start:3
获取结果开始0
domain:2
domain:1
获取结果开始1
获取结果开始2
domain:3
获取结果完成
result:2,1,3