public static void main(String[] args) throws Exception {
ExecutorService executorService = Executors.newFixedThreadPool(3);
ThreadTask threadTask = new ThreadTask();
String name = "1";
//supplyAsync有返回值,runAsync无返回值,加入线程池参数,则用指定的线程池执行,不加则用默认的线程池执行。
//例1.1:代码块
CompletableFuture<String> completableFuture11 = CompletableFuture.supplyAsync(() -> {
return getStaticSupply();
});
//例1.2:无参静态方法
CompletableFuture<String> completableFuture12 = CompletableFuture.supplyAsync(ThreadTask::getStaticSupply);
//例1.3:无参静态方法
CompletableFuture<String> completableFuture13 = CompletableFuture.supplyAsync(ThreadTask::getStaticSupply,executorService);
//例2.1:带参静态方法
CompletableFuture<String> completableFuture21 = CompletableFuture.supplyAsync(() -> {
return ThreadTask.getStaticParamSupply(name);
});
//例2.2:带参静态方法
CompletableFuture<String> completableFuture22 = CompletableFuture.supplyAsync(() -> ThreadTask.getStaticParamSupply(name));
//例2.3:带参静态方法
CompletableFuture<String> completableFuture23 = CompletableFuture.supplyAsync(() -> ThreadTask.getStaticParamSupply(name),executorService);
//例3.1 调用对象无参数方法
CompletableFuture<String> completableFuture31 = CompletableFuture.supplyAsync(() -> {
return threadTask.getObjectName();
});
//例3.2 调用对象无参数方法
CompletableFuture<String> completableFuture32 = CompletableFuture.supplyAsync(threadTask::getObjectName);
//例3.3 调用对象无参数方法
CompletableFuture<String> completableFuture33 = CompletableFuture.supplyAsync(threadTask::getObjectName,executorService);
//例4.1 调用对象有参数方法
CompletableFuture<String> completableFuture41 = CompletableFuture.supplyAsync(() -> {
return threadTask.getObjectParamName(name);
});
//例4.2 调用对象有参数方法
CompletableFuture<String> completableFuture42 = CompletableFuture.supplyAsync(() -> threadTask.getObjectParamName(name));
//例4.3 调用对象有参数方法
CompletableFuture<String> completableFuture43 = CompletableFuture.supplyAsync(() -> threadTask.getObjectParamName(name),executorService);
CompletableFuture<Void> allResult=CompletableFuture.allOf(
completableFuture11,completableFuture12,completableFuture13,
completableFuture21,completableFuture22,completableFuture23,
completableFuture31,completableFuture32,completableFuture33,
completableFuture41,completableFuture42,completableFuture43);
//阻塞等待所有任务执行完成
allResult.join();
}
private static String getStaticSupply() {
return "1";
}
private static String getStaticParamSupply(String name) {
return name;
}
private String getObjectParamName(String name) {
return name;
}
private String getObjectName() {
return "1111";
}