每次循环迭代和threadsleep的java日志记录都是不好的做法?
我想在特定的时间间隔内记录某些方法的进度(避免日志溢出)。我做了这个:
while (!x.isFinished()) {
LOG.info("some progress: {}", x.getStatus());
Thread.sleep(5000);
}
至于声纳告诉我们,使用Thread.sleep(n)
并将其标记为关键是不好的做法,我正在寻找更好、正确的方法来实现它。有什么我可以改进的吗
信息是:
Using Thread.sleep in a test is just generally a bad idea. It creates brittle tests that can fail unpredictably depending on environment ("Passes on my machine!") or load. Don't rely on timing
编辑: 这不是复制品,也不是测试。我想记录每个x间隔工作周期的时间
编辑2(根据@Wolf的回答进行澄清): 谢谢你的回复。它被用在多个地方,我想知道每次哪个地方是它。这是示例代码。更重要的是,它给了我一些知识,它需要多少时间来完成在它的生命和帮助诊断
我只是想知道是否有严格的方法来做到这一点,或者干脆忽略声纳
# 1 楼答案
如果这不是测试,那么代码中就没有问题。(这可能取决于代码的其余部分,但一般来说,使用Thread.sleep并不是一个好主意)
# 2 楼答案
让你的方法(或对象“x”)自己记录它的进度
或者让它定期调用一些回调方法来报告进度,您可以使用它来注入日志输出(或者更新进度条或任何您想要的内容)