【发布时间】:2013-01-13 02:22:16
【问题描述】:
这就是我想要做的。给定一个函数
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() 终止。
【问题讨论】:
-
闻起来像你需要 TimerTask。
-
听起来差不多。我从来没有用过。你能举个例子吗?