有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

每次循环迭代和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的回答进行澄清): 谢谢你的回复。它被用在多个地方,我想知道每次哪个地方是它。这是示例代码。更重要的是,它给了我一些知识,它需要多少时间来完成在它的生命和帮助诊断

我只是想知道是否有严格的方法来做到这一点,或者干脆忽略声纳


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    让你的方法(或对象“x”)自己记录它的进度

    或者让它定期调用一些回调方法来报告进度,您可以使用它来注入日志输出(或者更新进度条或任何您想要的内容)