问题:基本上是说两个客户端,服务器从第一个客户端显示消息,然后是连续的第二个客户。
预期结果:能够在一个客户端发送尽可能多的消息,然后在第二客户端上发送不同数量的消息。
尝试解决问题的步骤:
- 在僵局上查看一些网站,不确定这是否是同一件事。
- 尝试将客户端更改为先获取输入流
- 考虑摆脱lambda语法上的福特
复制问题的步骤:
- 加载服务器
- 加载客户1
- 加载客户2
- 客户1 上的消息
- 客户1 上的消息
- 客户2 上的消息
- 结果,每个客户端仅显示一条消息
⠀
public class PrintLine extends Thread {
private ArrayList<ClientThread> al;
private Integer count;
public PrintLine(ArrayList<ClientThread> al, Integer count) {
this.al = al;
this.count = count;
}
@Override
public void run() {
boolean done = false;
List<ClientThread> lines = new ArrayList<ClientThread>();
while (!done) {
al.stream().filter(x -> x.sInput == x.sInput).map(x -> x.getSInput()).forEach(sInput -> {
try {
System.out.println(sInput.readUTF());
} catch (IOException ex) {
Logger.getLogger(PrintLine.class.getName()).log(Level.SEVERE, null, ex);
}
});
}
}
}
项目的github链接:https://github.com/runite618/chatroomvers2/commits/multithreading
感谢您的阅读和任何答案。
马修。
发布此信息,以防其他人。
i通过在打印线类中为每个客户端创建单独的执行线程,现在可以从每个客户端执行消息。
。马特。