我正在寻找一种在没有多线程的情况下在Java中断循环的方法。
public class Foo{
public Foo(){
}
public void bar(long timeLimit) {
long endTime = System.currentTimeMillis() + (timeLimit * 1000);
while (System.currentTimeMillis() < endTime) {
// Some really long and complicated computation
}
}
}
目前我意识到在计算过程中会检查哪些(System.currentTimeMillis() < timeLimit)
次调用是否还有时间,但我想这会耗费一些时间,而且我还面临着如果循环开始及时的问题,计算可能无法及时完成。
相应地修改timeLimit(假设仅使用40%的时间)也不起作用,因为我无法预测某些计算需要多长时间。
有哪些选项?