【发布时间】:2016-05-18 02:28:05
【问题描述】:
我正在使用套接字和线程制作一个简单的控制台聊天应用程序。我有两个不同的线程用于发送和阅读消息。除了一件事,一切都很好。如果我当前在发送线程中,我必须阻止阅读器线程。
@Override
public void run() {
input = In.readLine();
while (!input.equals("x")) {
if (input.isEmpty()) {
Out.println("----------------------------");
Out.print("Your message: ");
message = In.readLine();
Out.println("----------------------------");
writer.println(message);
writer.flush();
}
input = In.readLine();
}
}
这里是阅读帖
@Override
public void run() {
try {
while ((receivedMessage = reader.readLine()) != null) {
Out.println("Received message: " + receivedMessage);
}
} catch (IOException ex) {
}
}
我要做的是:如果我当前正在写一条消息“message = In.readLine()”,同时我收到一些消息,这些应该只有在我完成输入后才会显示。
【问题讨论】:
-
将所有传入的消息添加到一个队列中,然后当输入完成后,处理入站消息队列并显示出来。
-
我唯一被允许使用的是:线程和(同步的)方法——等待、通知、notifyAll、join 等。这样的事情有可能吗? - 谢谢
标签: java multithreading sockets