java判断方法超时

工作中经常会遇到如下问题:

  1. 程序中某方法挺耗时,但想超过XX数值则按失败算;

  2. 程序中需要调用外部接口,要考虑外部接口不可用,或卡死问题。

针对以上问题,我们都想在程序中给某方法添加超时判断;运行程序等待该方法多长时间,超过则另作处理。

下面是写的一段代码,大致可以实现该功能:

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();}}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值