public void execute(){
for (int i=0;i<=100000000;i++)
{
System.out.println(i);
}
}
此方法只需执行两秒钟。 这意味着在打印88888时在for循环中开始执行此方法,如果两秒完成,那么程序必须自行停止。那可能吗?
答案 0 :(得分: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
以说明精确度。
答案 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