繁体   English   中英

Java println 多线程和标准输入问题

[英]Java println multithreading and stdin question

我有两个线程:其中一个(服务器)正在向控制台打印内容,另一个(用户)正在从控制台获取输入。 如果第一个线程在用户输入控制台时打印某些内容,则会出现此问题。 看起来像

command from usermessage from server 

或者如果用户没有完全输入命令

commmessage from server

它弄乱了用户的命令

有没有办法让它看起来像

message from server
command from user

或者

message from server
comm

所以要在控制台中当前键入的文本上方打印一行并保持用户输入。 我仍然希望第一个线程在用户键入时打印,因此锁定此线程直到用户输入命令不是一个选项

[我想] 在控制台中当前键入的文本上方打印一行并保持用户输入。

不幸的是,这里没有简单的答案。 输入的用户输入实际上是由终端而不是 Java 程序回显的。 您无法控制输入,一旦显示标准 output 就无法重新打印。

否则,唯一的方法是关闭终端回显并控制程序中的用户击键,但这会使它变得更加复杂。 请参阅: 如何禁用控制台回显

您还可以使用某种Java 对话框,然后在另一个对话框中弹出标准输出消息,或者让它 go 成为标准输出。

我仍然希望第一个线程在用户键入时打印,因此锁定此线程直到用户输入命令不是一个选项

是的,我担心锁定标准 output 消息是您执行此操作的唯一方法,除非您想使用不同的机制来获取用户输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM