java判断方法超时
2017-07-01 15:55
78 查看
工作中经常会遇到如下问题:
程序中某方法挺耗时,但想超过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();}}
程序中某方法挺耗时,但想超过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();}}
相关文章推荐
- java web 中判断方法是否运行超时以及运行超时后的再次调用(用到了线程相关的知识)
- java 判断方法调用是否超时 设置方法调用的超时时间
- java判断方法超时
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- Java实现控制线程超时的简单方法
- java中判断字符串是否为数字的三种方法
- 几种判断字符集编码的方法(Java) .未完
- JAVA中判断字符是否为中文的方法
- 判断java String中是否有汉字的方法
- java中判断字符串是否为数字的三种方法
- Java判断字符串是否为空的三种方法
- java中判断字符串是否为数字的三种方法
- java中判断字符串是否为数字的三种方法
- 关闭超时的java线程 --利用join和interrupt方法
- java中判断字符串是否为数字的三种方法
- java中判断字符串是否为数字的方法的几种方法
- java中判断字符是否是数字的几种方法
- java中判断字符串是否数字的两种方法
- java中判断字符串是否为数字的三种方法
- Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型