2016-11-07 20 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