import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureDemo {
public static void main(String [] args) throws InterruptedException, ExecutionException {
CompletableFutureDemo completableFutureDemo = new CompletableFutureDemo();
CompletableFuture t1 =
CompletableFuture.supplyAsync(completableFutureDemo::getChannel)
.thenApply(completableFutureDemo::protectMsg);
CompletableFuture t2 =
CompletableFuture.supplyAsync(completableFutureDemo::getLE)
.thenApply(completableFutureDemo::getAccount)
.thenApply(completableFutureDemo::getRout);
CompletableFuture.allOf(t1,t2).join();
System.out.println(t1.get());
System.out.println(t2.get());
CompletableFuture t = CompletableFuture.supplyAsync(completableFutureDemo::calculate)
.thenApply(completableFutureDemo::res);
System.out.println(t.get());
}
private String getChannel() {
try {
Thread.sleep(10L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "粗略查找符合条件的通道";
}
private String protectMsg(String s) {
try {
Thread.sleep(200L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return s+"维护信息";
}
private String getRout(String s) {
try {
Thread.sleep(15L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return s+"路由信息";
}
private String calculate() {
try {
Thread.sleep(20L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "可用性计算";
}
private String getLE() {
try {
Thread.sleep(12L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "获取LE下账号";
}
private String getAccount(String s) {
try {
Thread.sleep(13L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return s+"获取账号家族";
}
private String res(String s) {
try {
Thread.sleep(20L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return s+"按规则相乘后排序并输出结果";
}
}
网友评论