记录每个循环迭代和线程睡眠是不好的做法?

时间:2017-08-03 10:17:47

标签: java logging sonarqube thread-sleep

我想在特定时间间隔内记录某些方法的进度(避免日志溢出)。我做了这个:

while (!x.isFinished()) {
     LOG.info("some progress: {}", x.getStatus());
     Thread.sleep(5000); 
}

就声纳告诉使用Thread.sleep(n)并将其标记为关键的不良做法而言,我正在寻找更好,更合适的方法来制作它。有什么我可以提高的吗?

消息是:

  

在测试中使用Thread.sleep通常是一个坏主意。它创建   脆弱的测试,根据环境不可预测地失败   ("通过我的机器!")或加载。不要依赖时间

编辑: 这不是重复,它不是测试。我想在每个x间隔的工作周期内记录时间。

编辑2(根据@Wolf S回答澄清): 谢谢你的答复。它用在多个地方,我想知道每一个地方是什么。它的示例代码。更重要的是,它让我了解了在生命和帮助诊断过程中需要多长时间才能完成。

我只是想知道是否有一些严格的方法可以做到这一点,或者只是忽略声纳。

2 个答案:

答案 0 :(得分:0)

让您的方法(或对象'x')自行记录其进度。

或定期调用一些回调方法来报告可用于注入日志输出的进度(或更新进度条或任何你想要的内容)。

答案 1 :(得分:0)

如果这不是测试,则代码中没有问题。 (可能取决于代码的其余部分,但一般来说使用Thread.sleep并不是一个坏主意)