我正在尝试使用以下代码动态更改Windows控制台中的输出:
for(int i = 0;; i++,Thread.sleep(dur!("msecs")(200)))
write("\r",i);
但你必须等待很长时间才能看到屏幕上的内容。即使改为1毫秒,持续时间也足以将数字重写减慢到2-3秒。
输出改变如此(某处):
23343
30948332
42048332
似乎write()
函数工作可以在进程中间中断。
如果我们将write()
更改为writeln()
,sleep()
功能将正常运行。
为什么会这样?
答案 0 :(得分:7)
每次致电stdout.flush()
后使用write
。这是因为默认情况下写入是缓冲的,而writeln
(与write
不同)默认情况下刷新输出。
答案 1 :(得分:3)
正在缓冲输出。
在stdout.flush()
来电之前插入对Thread.sleep
的来电,以便立即查看输出。