参考: https://blog.youkuaiyun.com/qq_29407009/article/details/77892030
@Test
public void demo1() {
ExecutorService executor = Executors.newSingleThreadExecutor();
FutureTask<String> future = new FutureTask<String>(new Callable<String>() {
public String call() throws Exception {
return getResult();
}
});
executor.execute(future);
try {
// 指定时间内不返回结果就会报 TimeoutException
String result = future.get(1100, TimeUnit.MILLISECONDS);
System.out.println("时间充足");
System.out.println(result);
} catch (TimeoutException ex) {
System.out.println("执行时间超时");
ex.printStackTrace();
} catch (Exception e) {
System.out.println("方法执行出错");
}
executor.shutdownNow(); // 正在执行的任务 立即停止,没有执行的不再执行
// executor.shutdown(); //正在执行任务继续执行,没有执行的不再执行
}
// 执行方法
public String getResult() {
try {
// 毫秒
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
return "ok";
}