在我以前的博客《Java Future模式实现》中有介绍Future模式,Future模式非常适合在处理耗时很长的业务逻辑,可以有效的减少系统的响应时间,提高系统的吞吐量。JDK其实已经为我们提供了API实现,我们来看一段代码即可:
public class FutureTest {
public static void main(String[] args) {
FutureTask<String> futureTask = new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(2000);
return "ok";
}
});
ExecutorService es = Executors.newFixedThreadPool(1);
es.submit(futureTask);
System.out.println("开启线程去异步处理,主线程继续往下执行!");
try {
System.out.println("取得异步处理结果:" + futureTask.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
注意到线程池执行任务,可以利用2个方法: