Java:打印到屏幕延迟
所以我有一个函数,可以像在屏幕上打字一样打印文本 我尝试使用System.nanoTime设置并获取打印到屏幕所需的时间,并将其从Thread.sleep中删除,但仍然不顺畅 我希望每封信都能打印出来,并且所用的时间大致相同,而不是像现在这样在信之间来回颠簸Java:打印到屏幕延迟,java,java-threads,system.out,Java,Java Threads,System.out,所以我有一个函数,可以像在屏幕上打字一样打印文本 我尝试使用System.nanoTime设置并获取打印到屏幕所需的时间,并将其从Thread.sleep中删除,但仍然不顺畅 我希望每封信都能打印出来,并且所用的时间大致相同,而不是像现在这样在信之间来回颠簸 public static void slow_print(String to_print) { long time_between = 200; for (int i = 0; i < to_print.length
public static void slow_print(String to_print) {
long time_between = 200;
for (int i = 0; i < to_print.length(); i++) {
System.out.print(to_print.charAt(i));
try {
Thread.sleep(time_between);
}
catch(InterruptedException event) {
System.out.println("Not supposed to happen");
}
}
System.out.println();
}
输出被缓冲。要刷新缓冲区,您需要调用flush或将\n包含到字符串中。您可能需要刷新流。此外,控制台输出往往有点不可靠请参见这个问题:进一步阅读本主题。刷新输出后,它似乎仍有延迟。我不知道我做错了什么。请注意,您可以在一行程序System.out.appendto_print.charAti.flush;中打印和刷新;。如果仍然有延迟,它可能与接收终端连接,接收终端的行为完全不受您的控制。但您可以尝试在本机控制台或IDE中运行不同的终端,以比较行为,检查这是否是原因。