我正在尝试使用以下代码在Windows控制台中动态更改输出:
for(int i = 0;; i++,Thread.sleep(dur!("msecs")(200)))
write("\r",i);
但是您必须等待很长时间才能看到屏幕上的内容。即使更改为1毫秒,持续时间也足以将数字重写速度减慢到2-3秒。
输出更改如下(在某处):
23343
30948332
42048332
好像
write()
函数的工作可以在进程的中间被中断。如果我们将
write()
更改为writeln()
,sleep()
函数将正常运行。为什么会这样呢?
最佳答案
每次调用stdout.flush()
后使用write
。这是因为默认情况下写入是缓冲的,而writeln
(与write
不同)默认情况下会刷新输出。
关于multithreading - “Thread.sleep()”与“write()”一起使用时会产生一些奇怪的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23245750/