1、问题提出
一个需求要查n个接口,然后拿这n个接口的返回值,计算结果。
未使用多线程的做法耗时等每个接口请求的时间总和+最后结果计算时间。耗时长!
2、优化
使用多线程:
Callable<JSONObject> callable = new Callable<JSONObject>(){
//调用接口返回json
JSONObject json = ...
return json
}
//包装
FutureTask<JSONObject> oneTask = new FutureTask<JSONObject>(callable1);
FutureTask<JSONObject> twoTask = new FutureTask<JSONObject>(callable2);
//多线程运行
new Thread(oneTask).start();
new Thread(twoTask).start();
//计算
calcu(oneTask.get(),twoTask.get());
优化结果:使用多线程后,多接口调用由原来的串行变成并行,
耗时 = 调用耗时最长的接口调用的时间+最后结果计算时间。