@Test
public void imeOu() throws InterruptedException, TimeoutException, ExecutionException {
CompletableFuture<String> page1 = task.task();
CompletableFuture<String> page2 = task.task();
CompletableFuture<String> page3 = task.task();
List<CompletableFuture<String>> list=new ArrayList<>();
list.add(page1);list.add(page2);list.add(page3);
List<String> result=new ArrayList<>();
for(int i=0;i<list.size();i++){
// 异步线程执行超过5秒,就报出超时异常
result.add(page1.get(5, TimeUnit.SECONDS));
}
System.out.println(
result
);
System.out.println("-main-end-");
}
@Async
public CompletableFuture<String> task() {
int s=(int)(Math.random()*10000);
System.out.println("s="+s);
try {
Thread.sleep(s); // 随机睡眠几百毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("task-end");
return CompletableFuture.completedFuture("<data>");
}