- 开发场景中有是需要对响应时间较长的接口或者方法进行处理,比如跳过继续执行,或者其它的方式,这个可以使用Future实现:
- 代码
Callable<String> call = new Callable<String>() {
public String call() throws Exception {
return getRecCourses(params);
}
};
try {
ExecutorService exec = Executors.newFixedThreadPool(1);
Future<String> future = exec.submit(call);
csvData = future.get(1000 * 1, TimeUnit.MILLISECONDS);
} catch (TimeoutException ex) {
csvData = null;
LogUtil.warn(Module.COURSE, getClass(), "getCourseRecFromBI", "请求Bi推荐课程数据超时,使用原来推荐系统"ex);
} catch (Exception e) {
csvData = null;
LogUtil.warn(Module.COURSE, getClass(), "getCourseRecFromBI", "请求Bi推荐课程数据失败,使用原来推荐系统");
}