Java 每次循环迭代和线程睡眠都记录日志是不好的做法吗?
我想在特定的时间间隔内记录某些方法的进度(避免日志溢出)。我做了这个:Java 每次循环迭代和线程睡眠都记录日志是不好的做法吗?,java,logging,sonarqube,thread-sleep,Java,Logging,Sonarqube,Thread Sleep,我想在特定的时间间隔内记录某些方法的进度(避免日志溢出)。我做了这个: while (!x.isFinished()) { LOG.info("some progress: {}", x.getStatus()); Thread.sleep(5000); } 据sonar所说,使用Thread.sleep(n)并将其标记为critical是一种不好的做法,我正在寻找更好、正确的方法。有什么我可以改进的吗 信息是: 在测试中使用Thread.sleep通常是个坏主意。它创造
while (!x.isFinished()) {
LOG.info("some progress: {}", x.getStatus());
Thread.sleep(5000);
}
据sonar所说,使用Thread.sleep(n)
并将其标记为critical是一种不好的做法,我正在寻找更好、正确的方法。有什么我可以改进的吗
信息是:
在测试中使用Thread.sleep通常是个坏主意。它创造了
根据环境的不同,脆性测试可能会不可预测地失败
(“在我的机器上传递!”)或加载。不要依赖时机
编辑:
这不是重复,不是测试。我想记录每个x间隔的工作周期内的时间
编辑2(根据@Wolf的回答进行澄清):
谢谢你的回复。它被用在多个地方,我想知道每次哪个地方是它。这是示例代码。更重要的是,它给了我一些知识,它需要多少时间来完成在它的生命和帮助诊断
我只是想知道是否有一些严格的方法可以做到这一点,或者干脆忽略声纳。让你的方法(或对象“x”)自己记录它的进度
或者让它定期调用某个回调方法来报告进度,您可以使用它来注入日志输出(或更新进度条或任何您想要的内容)。让您的方法(或对象“x”)自己记录进度
或者让它定期调用某个回调方法来报告进度,您可以使用它来注入日志输出(或更新进度条或任何您想要的内容)。如果这不是测试,那么代码中就没有问题。(这可能取决于代码的其余部分,但一般来说,使用Thread.sleep并不自动是个坏主意)如果这不是测试,那么代码中就没有问题。(这可能取决于代码的其余部分,但一般来说,使用Thread.sleep并不一定是个坏主意)sonarqube具体说了什么?因此,你真正的问题可能是“为什么sonarqube认为这是一个测试,而不是?”这当然是我的问题@Michael。哦,这个代码的文件路径是什么?sonarqube具体说了什么?可能是重复的,所以你真正的问题应该是“为什么sonarqube认为这是一个测试,而不是?”这当然是我的问题@Michael。OP,这个代码的文件路径是什么?