我想在特定时间间隔内记录某些方法的进度(避免日志溢出)。我做了这个:
while (!x.isFinished()) {
LOG.info("some progress: {}", x.getStatus());
Thread.sleep(5000);
}
就声纳告诉使用Thread.sleep(n)
并将其标记为关键的不良做法而言,我正在寻找更好,更合适的方法来制作它。有什么我可以提高的吗?
消息是:
在测试中使用Thread.sleep通常是一个坏主意。它创建 脆弱的测试,根据环境不可预测地失败 ("通过我的机器!")或加载。不要依赖时间
编辑: 这不是重复,它不是测试。我想在每个x间隔的工作周期内记录时间。
编辑2(根据@Wolf S回答澄清): 谢谢你的答复。它用在多个地方,我想知道每一个地方是什么。它的示例代码。更重要的是,它让我了解了在生命和帮助诊断过程中需要多长时间才能完成。
我只是想知道是否有一些严格的方法可以做到这一点,或者只是忽略声纳。
答案 0 :(得分:0)
让您的方法(或对象'x')自行记录其进度。
或定期调用一些回调方法来报告可用于注入日志输出的进度(或更新进度条或任何你想要的内容)。
答案 1 :(得分:0)
如果这不是测试,则代码中没有问题。 (可能取决于代码的其余部分,但一般来说使用Thread.sleep并不是一个坏主意)