2016-11-07 54 views
0

我需要一些建議。獲取調用方法的進度

我有一個服務類與一個方法調用約10庫的方法。例如:

public void serviceMethod() { 
    repositoryMethod1(); 
    repositoryMethod2(); 
    repositoryMethod3(); 
    .... 
} 

執行服務方法需要花費大量的時間,我需要得到它的百分比目前的進展。

我可以在每次調用存儲庫方法後記錄一些信息。例如。

public void serviceMethod() { 
    repositoryMethod1(); 
    --log that 10% is completed 
    repositoryMethod2(); 
    --log that 20% is completed 
    .... 
} 

我認爲這是不好的解決方案,我想找到最好的解決方案。有人可以給我一些建議嗎?

我想過AOP(存儲庫方法的建議),但存儲庫方法可以由另一個服務調用,我不知道如何確定百分比。

+0

*我認爲這是不好的解決方案*:你爲什麼這麼認爲?這看起來很簡單,容易理解。 –

+0

爲什麼不把它發佈在代碼審查,而不是這裏,因爲它是一個非常廣泛的問題? – misha130

+0

@JBNizet我認爲它會添加重複的代碼。 – meverik

回答

0

可能不是最有效的解決方案,但我有一個想法。測量該方法完成所需的時間。然後使用該值計算完成百分比並將其記錄到控制檯。然後,只需編寫一個執行此操作的單獨方法。 例如,如果該方法需要60秒運行,你會做100(百分比)/ 60(所花費的時間)並獲得1.6(粗略),然後在一個單獨的方法中使用java.util.timer並創建一個計時器以每1.6秒。在每個滴答只記錄一個百分比的控制檯和繁榮,您的加載計時器已創建。

注意結果可能會略有偏移,因爲計算機會在您的其他方法的旁邊運行此方法。

+0

我想過這樣的解決方案,但方法的執行總是不一樣的,大約需要3個小時。 – meverik