[英]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.