我目前正在尝试学习如何在60秒后停止使用Java运行的方法,并提出以下代码:
`long start = System.currentTimeMillis();
long end = start + 60000L;
while (System.currentTimeMillis() < end) {
Experiment.runToStringArrayListExperiment();
}`
使用此代码,我相信Experiment方法应该在60秒后停止运行,但是,它不会这样做。我不知道我是否只是遗漏了某些东西,或者我是否有疏忽,这很可能就是这种情况。如果您发现错误或采取不同的方式,我们将非常感谢您提供帮助。谢谢!
答案 0 :(得分:1)
尝试将执行时间设置为60秒的执行程序:
ExecutorService executor = Executors.newCachedThreadPool();
Callable<Object> task = new Callable<Object>() {
public Object call() {
return something.blockingMethod();
}
};
Future<Object> future = executor.submit(task);
try {
Object result = future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException ex) {
// handle the timeout
} catch (InterruptedException e) {
// handle the interrupts
} catch (ExecutionException e) {
// handle other exceptions
} finally {
future.cancel(true);
}