我正在使用 TimerTask 来模拟在线程中运行的程序的一部分,在不可预测的时间产生输出。
package consoletest;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class ConsoleTest {
public static void main(String[] args) {
TimerTask tt = new TimerTask(){
public void run() {
System.out.print("\n***");
}
};
new Timer(true).schedule(tt, 2000);
Scanner scanner = new Scanner(System.in);
System.out.print("enter a command: ");
String line = scanner.nextLine();
}
}
我的问题是,如果您在输出发生时主动键入,则将输出插入到当前光标位置,然后将光标放在输出字符串的末尾。
例如,这是我慢慢输入 12345678 的屏幕截图,您可以看到输出被插入到我输入的中间。
我不希望这个异步输出如此严重地干扰当前输入光标。如果我可以在光标位置之后打印输出而不更改光标位置,那很好。甚至更好的是在当前提示之前完全打印输出(将提示向下移动),但我认为这可能涉及以某种方式结束提示,打印输出,然后在复制任何正在进行的输入时制作新提示。