调第三方接口如果长时间不响应,使用线程池处理
如果执行的逻辑三秒没有返回,抛出 TimeoutException 异常
ExecutorService exec = Executors.newSingleThreadExecutor();
Callable<String> call = new Callable<String>() {
@Override
public String call() throws Exception {
return "要执行的逻辑";
}
};
Future<String> future = exec.submit(call);
try {
//如果执行的逻辑三秒没有返回,抛出 TimeoutException 异常
String result = future.get(1000*3, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}