JAVA 方法执行超时处理
java1.5以上的Future类可以执行超时处理。
jdk1.5自带的并发库中Future类中重要方法包括get()和cancel(),get()获取数据对象,如果数据没有加载,就会阻塞直到取到数据,而 cancel()是取消数据加载。另外一个get(timeout)操作,表示如果在timeout时间内没有取到就失败返回,而不再阻塞。
代码如下:
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<Boolean> future = executorService.submit(() -> method(param));
try {
//设置超时时间
boolean rst = future.get(200, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
System.out.println("执行超时!");
} catch(Exception e){
System.out.println("获取数据异常," + e.getMessage());
}finally {
executorService.shutdown();
}