这就是我想做的。给定一个函数
public void foo() {
}
我想让它在一定时间过去后结束。也就是说,假设这是某种随机生成器,它必须生成满足一些困难约束的随机对象,因此在给定的时间分配下它可能会成功,也可能不会成功。也就是说,函数实际上可能是这样的
public void foo() {
//task1
while(fails) {
//...
}
//task2
while(fails2) {
//...
}
//more tasks may follow, which use the data from the previous tasks to further try to satisfy difficult conditions
}
这只是一个例子。但关键是该函数由许多 while 循环、许多测试用例和大量繁重的计算组成。
目标:我希望能够说“运行 foo(),如果 4 秒后 foo() 仍未完成,则立即停止 foo()”。
我尝试过的:我尝试在 foo() 的几乎每一行都包含条件,以查看已经过去了多少时间,如果 4 秒过去了,则返回函数。但是考虑到 foo() 的复杂程度,这显然很难在代码方面进行,因为这需要在函数的每一行上测试时间。
我的思维逻辑:我认为这应该是可能的,因为有些函数可以做这种事情,无论状态如何都会终止代码,例如 System.exit(1)。这就是想法。我希望能够从外部调用让这个函数 foo() 终止。