线程执行设置超时时间
作者:互联网
import java.util.concurrent.*;
/**
* 记录,备忘……
* 线程执行设置超时时间
*/
public class Main2 {
// 定义线程池,推荐手动创建线程池: https://blog.csdn.net/LLLLLiSHI/article/details/88057655
private static ExecutorService pool = Executors.newFixedThreadPool(1);
/**
* jdk的api:Future类已经提供满足的api
*/
public static void main(String[] args) {
System.out.println("主程序执行开始……");
//定义线程
Callable call = new Callable<String>(){
@Override
public String call() throws Exception {
// 设置2秒睡眠
TimeUnit.SECONDS.sleep(2);
return "这是线程执行结果……";
}
};
// 手动控制线程
Future result = pool.submit(call);
try {
// 如果在超时时间内,没有数据返回:则抛出TimeoutException异常
Object callResult = result.get(1, TimeUnit.SECONDS);
System.out.println(callResult);
} catch (InterruptedException e) {
System.out.println("InterruptedException发生");
} catch (ExecutionException e) {
System.out.println("ExecutionException发生");
} catch (TimeoutException e) {
System.out.println("TimeoutException发生,意味着线程超时报错");
}
System.out.println("主程序执行完成……");
}
}
参考https://blog.csdn.net/a9529lty/article/details/42711029
标签:call,System,线程,设置,println,TimeoutException,超时,out 来源: https://blog.csdn.net/LLLLLiSHI/article/details/88644558