如何在60秒后停止在java中运行的方法

时间:2018-05-01 02:23:16

标签: java

我目前正在尝试学习如何在60秒后停止使用Java运行的方法,并提出以下代码:

`long start = System.currentTimeMillis();
 long end = start + 60000L;
 while (System.currentTimeMillis() < end) {
     Experiment.runToStringArrayListExperiment();
 }`

使用此代码,我相信Experiment方法应该在60秒后停止运行,但是,它不会这样做。我不知道我是否只是遗漏了某些东西,或者我是否有疏忽,这很可能就是这种情况。如果您发现错误或采取不同的方式,我们将非常感谢您提供帮助。谢谢!

1 个答案:

答案 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);
}