我正在尝试解析工作中的文件但由于某种原因,我的for循环在执行下一次迭代之前不会执行整个迭代的任务。
我在这里有一个示例代码,显示了相同的问题,我认为如果我能解决这个简单的例子,我将能够解决我工作中更复杂的问题。
示例代码:
package loops;
public class Loops {
public static void main(String[] args) {
System.out.println("here goes");
for(int i=0;i<1000;i++){
System.err.println(i);
if(i==i){
System.out.println(i+1);
}
}
}}
上面的代码运行并打印循环的迭代&#34; i&#34;红色的。它通过if语句并以黑色打印i + 1。我的问题是,它不是红黑色的黑色,而是在完成for循环之前很长时间才完成if语句&#34; i&#34;打印输出。有没有办法让这个循环按顺序排列?我试图让它在每次迭代后都进入睡眠状态,但这并没有解决它。
感谢。
答案 0 :(得分:0)
Stdout是缓冲的,stderr不是。将stdout或两者都打印到stderr,不要混合它们。
答案 1 :(得分:0)
这是因为System.out
和System.err
都可以是缓冲流。这意味着当数据放在流上而不是块中时,写入不会立即执行。
尝试在每次打印后立即刷新输出:
System.out.println(...);
System.out.flush();
通过这种方式,您将强制流在执行其他指令之前刷新缓冲区。这可能会带来性能成本。