0

当我编写如下 Java 代码时:

for (int iRun = 0; iRun <nRun; iRun++){
   doSomething();
   if (100 < nRun && iRun % (nRun / 100) == 0)
      System.err.print("\rWorking " + Math.ceil(100.0 * iRun / nRun) + "%");
}
System.err.println("\rWorking " + Math.ceil(100.0 * iRun / nRun) + "%");
System.err.println("fin");

, 它有时会返回

Working 100.0%
fin

,机器人并不总是......它也会打印

Working 100.0%Working 100.0%
fin

.

我认为,在我的代码中,System.err#println当时没有任何线程调用。

即使我放入Thread.sleep(100);,它也经常打印Working 100.0%两次。我没有尝试超过 100 秒。(我不确定它是否真的有效并且更进一步......我尝试的还不错......)

如何确保代码仅以第一种方式打印?如果有一定的答案,它也可以用于System.out::println吗?

4

0 回答 0