如何在某个代码块上执行超时

时间:2018-01-28 16:39:22

标签: for-loop try-catch executor

我正在尝试以下方法:

例如,我有一些代码块,执行时间超过30秒,但是如果需要超过30秒,我想停止它。

所以我想在某个代码块上设置超时,但是循环应该在其他迭代中执行。

到目前为止,这是我的代码:

For (i=0;i<3;i++) 
{ 
  private void gracefulShutDown(ExecutorService executor) 
  { 
    try 
    {  
      executor.shutdown(); 
      executor.awaitTermination(30, TimeUnit.SECONDS);    // some code here takes more than 30 sencons to execute 
    } 
    catch (InterruptedException e) 
    { 
      log.error("Termination interrupted", e); 
    } 
    finally 
    { 
      if (!executor.isTerminated()) 
      { 
        log.warn("Killing non-finished tasks"); 
      } 
      executor.shutdownNow(); 
    } 
  } 
} 

0 个答案:

没有答案