[英]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.