java判断方法超时
工作中经常会遇到如下问题:
-
程序中某方法挺耗时,但想超过XX数值则按失败算;
-
程序中需要调用外部接口,要考虑外部接口不可用,或卡死问题。
针对以上问题,我们都想在程序中给某方法添加超时判断;运行程序等待该方法多长时间,超过则另作处理。
下面是写的一段代码,大致可以实现该功能:
public static void main(String[] args){
Thread t = null;
try{
FutureTask<Boolean> task = new FutureTask<Boolean>(new Callable<Boolean>() {
public Boolean call() throws Exception {
Thread.sleep(10*100);//处理方法
return true; //返回处理结果
}
});
t = new Thread(task);
t.start();
boolean bl = task.get(10*10, TimeUnit.MILLISECONDS); //允许阻塞等待方法处理1秒,超出则抛异常
System.out.println(bl);
System.out.println(t.getState());
}catch(Exception e1){
e1.printStackTrace();
System.out.println(t.getState());
t.interrupt(); //在超时情况下上面新生成的线程不会关闭直到方法处理完毕,需要中断
}
try{
for(int j=0;j<13;j++){
Thread.sleep(10*10);
System.out.println(j+ "" + t.getState());
}
}catch(Exception e2){
e2.printStackTrace();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统