java 执行某耗时操作,超过最大等待时间后,代码自动跳过,继续执行后面的程序
来源:锐游网
public static void main(String[] args){
System.out.println("执行第一部分代码。。。。");
System.out.println(new Testk().test());
System.out.println("执行第三部分代码。。。。");
}
private String test(){
String result = "";
final ExecutorService exec = Executors.newFixedThreadPool(1);
Callable<String> call = new Callable<String>() {
public String call() throws InterruptedException {
//开始执行耗时操作
new Thread().sleep(2000);
return "执行第二部分代码";
}
};
try {
Future<String> future = exec.submit(call);
result = future.get(1000 * 3, TimeUnit.MILLISECONDS); //任务处理超时时间设为 3 秒
} catch (TimeoutException ex) {
System.out.println("调用接口,处理超时......");
ex.printStackTrace();
} catch (Exception e) {
System.out.println("调用接口,处理失败......");
e.printStackTrace();
}
// 关闭线程池
exec.shutdown();
return result;
}
输出:
执行第一部分代码。。。。
执行第二部分代码
执行第三部分代码。。。。
如果将睡眠时间设置为4000
则输出:
执行第一部分代码。。。。
调用接口,处理超时......
执行第三部分代码。。。。
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at com.hbis.ttie.lbs.ctrl.rest.Testk.test(Testk.java:25)
at com.hbis.ttie.lbs.ctrl.rest.Testk.main(Testk.java:8)
因篇幅问题不能全部显示,请点此查看更多更全内容