使用Future类执行超时处理。
代码如下:
import java.util.concurrent.*;
public class CheckTimeOut {
public static void main(String[] args) {
System.out.println(method(3, 2));
}
/**
* @param threadNum 线程池的数量
* @param timeOut 超时时限
* @return 返回执行结果
*/
public static String method(int threadNum, int timeOut) {
// 获取线程池
ExecutorService es = Executors.newFixedThreadPool(threadNum);
// Future用于执行多线程的执行结果
Future<String> future = es.submit(() -> {
String s = "程序执行代码";
return s;
});
try {
// futrue.get()测试被执行的程序是否能在timeOut时限内返回字符串
return future.get(timeOut, TimeUnit.SECONDS);//任务处理超时时间设为 1 秒
} catch (Exception ex) {
System.out.println("输出异常:" + ex.getMessage());
} finally {
// 关闭线程池
es.shutdown();
}
return null;
}
}