java实现调用,如果超时则报异常的方法实现(阻塞执行)
//需要设置超时的方法
public static void main(String[] args) {
String data =getYcdata();
System.out.println(data);
}
//需要设置超时的方法
public static String getResult(){
return "result";
}
//自定义超时机制
private static String getYcdata() {
final ExecutorService exec = Executors.newFixedThreadPool(1);
Callable<String> call = new Callable<String>() {
@Override
public String call() throws Exception {
//开始执行耗时操作
Thread.sleep(1000 * 2);
String str = getStr();
return str;
}
};
String obj =null;
try {
Future<String> future = exec.submit(call);
//任务处理超时时间设为 1 秒
//方法将再此阻塞,直到超时报异常或者方法有返回值
obj= future.get(1000 * 10, TimeUnit.MILLISECONDS);
} catch (TimeoutException ex) {
System.out.println("处理超时啦....");
ex.printStackTrace();
} catch (Exception e) {
System.out.println("处理失败.");
e.printStackTrace();
}
// 关闭线程池
exec.shutdown();
return obj;
}