package com.trpc.netty;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* 异步阻塞子线程,获取结果
*/
public class MyCompletableFuture {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//1定义一个 CompletableFuture 泛型 Integer
CompletableFuture<Integer>completableFuture=new CompletableFuture<>();
System.out.println("启动一个子线程");
//2创建一个子线程
new Thread( ()->{
try {
//睡眠五秒钟
for (int i = 5; i >0; i--) {
Thread.sleep(1000);
System.err.println("倒计时:"+i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
int i=999;
//将i结果通过complete返回
completableFuture.complete(i);
}).start();//启动子线程
System.out.println("主线程执行到这阻塞住了");
//通过get方法获取五秒钟后的值,但是get方法是阻塞的
Integer integer = completableFuture.get();
System.out.println("integer = " + integer);
}
}
CompletableFuture实现子线程异步策略
最新推荐文章于 2024-07-14 22:26:46 发布