标签:stack ted 技术 ado art pre service script proc
其中Future接口相当于订单或契约,拿着她可以取到买的Mac Pro,也就是可以取到真实数据。RunnableFuture继承了Future和Runnable两个接口,其中run方法用用于构造真实数据。她有一个具体的实现FutureTask类。FutureTask会调用Callable接口完成实际的数据组装工作。
JDK内置的Future基本使用
/**
* Created with IntelliJ IDEA.
* User: zyg
* Date: 2019/2/2
* Time: 下午2:41
* Description:使用callable实例构造一个FutureTask实例,并将其提交给线程池
*/
public class RealData implements Callable<String> {
private String para;
public RealData(String para) {
this.para = para;
}
//实现Callable接口,其call方法会构造真实数据并返回
public String call() throws Exception {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 10; i++) {
Thread.sleep(200);
sb.append(para);
}
return sb.toString();
}
public static void main(String[] args) {
//使用Callable接口实例构造FutureTask实例
FutureTask future = new FutureTask(new RealData("大幂幂"));
//定义线程池
ExecutorService exec = Executors.newFixedThreadPool(1);
//使用现场异步处理真实数据
exec.submit(future);
System.out.println("请求完毕,可以接着做其他事情...");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//业务处理完毕,现在假设需要真实数据,使用Callbale接口的get方法,获取真实数据
//如果真实数据还没准备好则阻塞,这个过程在模拟Future模式的时候已实现
try {
System.out.println("数据{}," + future.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
exec.shutdown();
}
}
标签:stack ted 技术 ado art pre service script proc
原文地址:http://blog.51cto.com/3265857/2348679