我有一个进行采样的 Java 方法。也就是说,它执行以下操作:
TIME = 60 /* seconds */
startTime = now();
count = 0;
while (now() - startTime < TIME) {
sample = createRandomSample();
if (satisfiesSomeConditions(sample)) {
count++;
}
}
return count;
现在,通常 createRandomSample() 和 satisfiesSomeConditions(sample) 运行得非常快(在一秒钟或更短的时间内),所以这段代码运行良好。
但是,有时,这些功能之一可能需要很长时间才能运行。如何控制此采样过程的运行时间不超过 TIME 要求的时间。我不介意它的运行时间是否比 TIME 长 10%,但我不希望它在 TIME 上运行任意长的时间。
ExecutorService 似乎太苛刻了。
这更像是我们想在一个单独的线程上运行采样,然后轻轻地告诉该线程停止采样并给出它当前的任何结果。