可以突然停止java方法吗?

时间:2013-02-06 15:49:38

标签: java

public void execute(){
        for (int i=0;i<=100000000;i++)
        {
            System.out.println(i);
        }
    }

此方法只需执行两秒钟。 这意味着在打印88888时在for循环中开始执行此方法,如果两秒完成,那么程序必须自行停止。那可能吗?

3 个答案:

答案 0 :(得分:1)

您可以在循环内随时使用break;立即退出循环。这适用于Java中的任何循环(例如forwhiledo...while)。例如:

public void execute() {
    long startTime = System.currentTimeMillis();
    for (int i = 0; i <= 100000000; i++) {
        long currentTime = System.currentTimeMillis();
        if ((currentTime - startTime) >= 2000) {
            break;
        }
        System.out.println(i);
    }
}

一旦经过的时间大于或等于2秒(粗略地),这将导致循环退出。

编辑:正如@LouisWasserman评论的那样,你可以使用System.nanoTime()更精确,不受闰秒之类的影响。如果您使用它,只需检查差异是否大于或等于2000000000以说明精确度。

答案 1 :(得分:1)

您可以使用System.currentTimeMillis()。像这样:

public void execute(){
  long beginMillis = System.currentTimeMillis();
  for (int i=0;i<=100000000;i++)
  {
    if (System.currentTimeMillis() - beginMillis > 2000) {
      break;
    } 
    System.out.println(i);
  }
}

侧节点 - 获取当前时间实际上非常慢,所以我建议在给定次数的迭代后进行检查。你不会在2秒内停下来,但减速会更小。

答案 2 :(得分:0)

正如@Marc Baumbach所提到的,如果你处于循环中,你可以使用break;

只是要添加,但是如果您想要实际退出方法而不是退出循环,可以使用return;关键字

public class Tester {
    public static void main(String args[]) {
        for(int i=0; i<10; i++) {
            System.out.println(i);
            if(i==5) return;
        }
    }
}

会打印......

0
1
2
3
4
5