我有以下代码:
List<String> instances2 = Arrays.asList("instances/umps20.txt","instances/umps22.txt","instances/umps24.txt","instances/umps26.txt","instances/umps28.txt","instances/umps30.txt","instances/umps32.txt");
List<Integer> qq1 = Arrays.asList(9,10,11,12,13,14,14);
List<Integer> qq2 = Arrays.asList(4,4,5,5,5,5,6);
for (int i = 0; i<7; i++) {
Tournament t = p.process(instances2.get(i));
int nTeams = t.getNTeams();
int q1 = qq1.get(i);
int q2 = qq2.get(i);
UndirectedGraph graph = g.create(t, q1, q2);
new Choco(graph, nTeams);
}
}
现在我想对每次迭代施加限制。因此,假设 3h = 10 800 000ms 后,我希望 for 循环中的所有内容都停止并开始循环的下一次迭代。有什么想法吗?
提前致谢!
尼古拉斯
最佳答案
您可以在开始循环之前获取系统时间,并在每次迭代后进行比较,以检查时间是否超过指定时间,如下所示:
for 循环开始时:
long start = System.currentTimeMillis();
在每次迭代中:
if(start + 10_800_000 >= System.currentTimeMillis()){
start = System.currentTimeMillis();
i++;
}
并且你必须删除 for 循环中的 i++
for (int i = 0; i<7;) {
关于java:for循环内的最大执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43101566/