package integral;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
*
* @author YangTG
* 異步執行
*/
public class CompletableFutureDemo {
public static void any(){
System.out.println("runAsync..");
}
public static String any1(){
return "supplyAsync...";
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
List<CompletableFuture> list = new ArrayList<>();
int i=0;
//沒有返回值異步
/*while(i<5){
CompletableFuture<Void> comp = new CompletableFuture<>().runAsync(()->{
CompletableFutureDemo.any();
});
list.add(comp);
i++;
}*/
CompletableFuture<String> future =null;
//有返回值
while(i<5){
future = new CompletableFuture<>().supplyAsync(()->{
return CompletableFutureDemo.any1();
});
list.add(future);
i++;
}
//之前執行
future.thenRun(()->{
CompletableFutureDemo.any();
});
System.out.println("執行完畢");
list.forEach(a->{
try {
System.out.println(a.get());
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
執行結果
runAsync..
執行完畢
supplyAsync...
supplyAsync...
supplyAsync...
supplyAsync...
supplyAsync...