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

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

4

3 回答 3

1

您可以break;在循环内的任何时间使用以立即退出循环。这适用于 Java 中的任何循环(例如for, while, do...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说明精度。

于 2013-02-06T15:53:17.883 回答
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 秒后停止,但减速会更小。

于 2013-02-06T15:57:16.360 回答
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
于 2013-02-06T15:58:06.323 回答