java多线程系列13 设计模式 Future 模式

时间:2021-06-26 04:21:24

Future 模式

类似于ajax请求  页面异步的进行后台请求

用户无需等待请求的结果 就可以继续浏览或者操作

核心就是:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑

JDK内置实现Future模式演示一下

public class RealData implements Callable<String> {
String res = null; @Override
public String call() throws Exception {
Thread.sleep(5000); // 模拟处理数据的过程 并将结果放在res里面
res = "result";
return res;
} public static void main(String[] args) {
FutureTask<String> futureTask =
new FutureTask<String>(new RealData());
ExecutorService executor =
Executors.newFixedThreadPool(1);
executor.submit(futureTask);
//这里使用sleep 模拟 真实业务
try {
Thread.sleep(2000);
} catch (InterruptedException e) { e.printStackTrace();
} try {
System.out.println("res= " + futureTask.get()); //如果call()没有执行完成 get依然会等待
} catch (Exception e) {
e.printStackTrace();
} }
}