我需要创建一个方法,如果我输入该方法并且如果我需要超过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;
}
答案 0 :(得分:1)
您可以使用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秒则会停止。在这里,你可以扔或任何你想要的。否则,它将继续有效。