2016-12-19 92 views
0

的方法添加超時我有方法的定義,以使這個「pllForStatus」不保持在一定的情況下,執行下列現在執行多條路徑

private void pollForStatus() throws InterruptedException { 

      if (state.equals("running")) { 
       log.debug("Task still running, Polling again .."); 
       TimeUnit.SECONDS.sleep(1); 
       pollForStatus(); 
      } 

      else if (state.equals("complete")) { 
       return; 
      } 

      else if (state.equals("stopped")) { 
      { 
        // Report error state 

      } 

} 

,我想補充一個超時的遞歸。這在Java(7)中如何實現?

+0

是不是遞歸應該用於基本情況? – BiGGZ

+0

如果上述情況中的「狀態」更改正確,基本情況如何?我在考慮更多的是,如果由於某種原因,狀態卡在'正在運行'狀態導致遞歸無限期地遞歸 –

+0

一種方法會記錄線程開始使用System.currentTimeMillis的時間,然後計算未來時間,並在每個循環,確保futureTime未通過。有什麼影響 – BiGGZ

回答

0
long futureTime = System.currentTimeMillis + yourInterval; 
private void pollForStatus() throws InterruptedException { 

    if (state.equals("running")) { 
     log.debug("Task still running, Polling again .."); 
     TimeUnit.SECONDS.sleep(1); 

     //havnt reached cut off time yet, loop again 
     if(System.currentTimeMilis() < futureTime){ 
      pollForStatus(); 
     } 
    } else if (state.equals("complete")) { 
     return; 
    } else if (state.equals("stopped")) { 

     // Report error state 

    } 


}