Java 冻结线程导致按键被保存-如何清除输入流中的System.in?

Java 冻结线程导致按键被保存-如何清除输入流中的System.in?,java,kotlin,terminal,console,Java,Kotlin,Terminal,Console,在我的代码中,我在打印字符串中的一个字符后停止线程,以便逐字写入字符串。 当线程停止时,意味着直到字符串打印完成,用户按下的任何键都不会打印在屏幕上,也不会被丢弃。 但是,如果在这之后有一个readLine()函数,它会将存储的按键输入到系统中。在输入流中,如果用户按下enter键,这些按键会立即作为输入发送。 因此,我的问题是,是否可以清除输入流中的System.in并取消这些杂散按键? 我的代码: val foo=“你好,世界” for(foo中的字符){ 打印(字符) 线程。睡眠(40)


在我的代码中,我在打印字符串中的一个字符后停止线程,以便逐字写入字符串。
当线程停止时,意味着直到字符串打印完成,用户按下的任何键都不会打印在屏幕上,也不会被丢弃。 但是,如果在这之后有一个readLine()函数,它会将存储的按键输入到系统中。在输入流中,如果用户按下enter键,这些按键会立即作为输入发送。 因此,我的问题是,是否可以清除输入流中的System.in并取消这些杂散按键?
我的代码:

val foo=“你好,世界”
for(foo中的字符){
打印(字符)
线程。睡眠(40)
}
val input=readLine()//确保不为空
println(输入)
非常感谢您的帮助。

Kotlin帮助是首选,但Java answers也同样适用。

您需要刷新缓冲区。 在Java中尝试System.out.flush()。 但我不确定这是否是问题所在。
一些参考资料

什么是
内容
?你从哪里得到的?@Lino很抱歉没有指定,内容是字符串。我不明白按键与粘贴的代码有什么关系。@缺少分号如果在线程暂停时按任何键,它将在线程重新启动时保存并粘贴回。这一切都取决于你使用的控制台。我的猜测是,这只是一个控制台或一个shell,响应您键入的内容。对于基于linux的控制台,这是标准行为。谢谢,我会试试!