使用示例
public class Test {
public static void main(String[] args) throws Exception{
CompletableFuture<Void> future=CompletableFuture.runAsync(new Runnable() {
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName()+"没有返回值的异步任务。");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
future.get();
CompletableFuture<String> future2=CompletableFuture.supplyAsync(new Supplier<String>(){
@Override
public String get() {
try {
System.out.println(Thread.currentThread().getName()+"有返回值的异步任务。");
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "OK";
}
}).exceptionally(e -> {
e.printStackTrace();
return "出异常了!";
}).whenComplete((t,u)->{
System.out.println("成功了!");
});
String result=future2.get();
System.out.println("结果:"+result);
}
}
结果:
ForkJoinPool.commonPool-worker-1没有返回值的异步任务。
ForkJoinPool.commonPool-worker-1有返回值的异步任务。
成功了!
结果:OK