繁体   English   中英

JAVA超时自动异常

[英]Auto exception on time out in JAVA

我需要创建一个方法,如果我进入该方法,并且如果需要我超过 30 秒来处理该方法,那么它应该抛出一个异常,我将立即退出该方法,我可以在调用方法,以便我的下一个过程顺利进行。

public static void method() {
    Timer timer=new Timer();
    timer.schedule(new TimerTask() {
        @SuppressWarnings("finally")
        @Override
        public void run() {
            try {
                System.out.println("inner "+Thread.currentThread());
                System.out.println("first ");
            }
            finally{ System.out.println("before return "); throw new RuntimeException("Sorry TimeOut");}
            } 
    },400);
    try{
        System.out.println(Thread.currentThread());
        Thread.sleep(1000);
        }catch(InterruptedException e){}
        System.out.println("OKKKKK");
    //return null;
}

您可以使用 System.currentTimeMillis() 过去您的初始/进入时间,然后检查当前时间。 然后,比较已经过去了多少时间。 如果没有超过所需的时间限制,则继续操作。 如果超过则返回或抛出异常。 下面给出了示例代码:

public class Test{

public static void main( String[] argv) throws Exception{
    Timer timer=new Timer();
    timer.schedule(new TimerTask() {

          @Override
          public void run() {
            long currentTime = System.currentTimeMillis();
            int i = 0;
            while (i < 9999999){
                if ((System.currentTimeMillis()-currentTime)>(3*1000L)) {
                    System.out.println("Time is up");
                    return;
                }
                System.out.println("Current value: " + i);
                i++;
            }
          }
        }, 5*1000);
}
}

现在,这里如果System.currentTimeMillis()-currentTime表示时间差。 如果时间差高于 3 秒,则它将停止。 在这里,你可以扔或任何你想要的。 否则,它将继续工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM