Java 如何暂停扫描仪从读取到广播消息?

Java 如何暂停扫描仪从读取到广播消息?,java,java.util.scanner,dataoutputstream,Java,Java.util.scanner,Dataoutputstream,我正在尝试实现一个客户机-服务器应用程序。假设我有两个文件,Server.java和Client.java。我通过DataOutputStream和DatainputStream以及socket编程与两者连接。客户端在Server.java中实现了多线程 现在Server.java正在执行一个write.utf()向Client.java写入一个问题,Client.java在其终端中实现了一个readUTF(),并使用Scanner类从用户键盘获取输入 假设现在有另一个客户端线程想要向所有其他客

我正在尝试实现一个客户机-服务器应用程序。假设我有两个文件,
Server.java
Client.java
。我通过
DataOutputStream
DatainputStream
以及socket编程与两者连接。客户端在Server.java中实现了多线程

现在Server.java正在执行一个
write.utf()
向Client.java写入一个问题,Client.java在其终端中实现了一个
readUTF()
,并使用
Scanner
类从用户键盘获取输入


假设现在有另一个客户端线程想要向所有其他客户端广播消息。如何在客户端控制台中停止/暂停/锁定
扫描仪
,以对客户端控制台执行
writeUTF()
以广播消息?在消息广播后,客户端应该能够恢复其活动。

一种可能的解决方案是使用
队列。当您从
扫描仪
读入时,可以将消息放入
队列
,直到消息发出。当需要进行广播时,可以将其置于
队列
(或者根据情况置于多个队列上)。只要确保如果有多个线程访问一个
队列
,那么您将它放入一个
同步的
代码块中


在客户机-服务器情况下,可能会使用
LinkedBlockingQueue
,因为这将允许您永远从
队列
中读取,并且当队列为空时,客户端或服务器只需等待
队列
获取另一个项目,而无需您进行任何持续检查。

您好,我想我正在寻找当客户端位于
系统中时如何向客户端广播消息。
。因此,当消息被广播时,客户端当前仅在输入扫描仪后接收消息。我想知道是否有办法,在某种程度上,再次对客户端执行
writeOutf()
。如果我误解了,很抱歉。因此,您要做的是等待用户完成对扫描仪的输入,然后按enter键,然后才接收广播?因此,当扫描仪等待用户完成对扫描仪的输入时,即使“readUTF()”尚未收到来自扫描仪的输入,也需要广播消息。