客户端线程和服务器,服务器显示客户端 1 的消息,然后显示客户端 2 的消息,然后显示 1 等



问题:基本上是说两个客户端,服务器从第一个客户端显示消息,然后是连续的第二个客户。

预期结果:能够在一个客户端发送尽可能多的消息,然后在第二客户端上发送不同数量的消息。

尝试解决问题的步骤:

  1. 在僵局上查看一些网站,不确定这是否是同一件事。
  2. 尝试将客户端更改为先获取输入流
  3. 考虑摆脱lambda语法上的福特

复制问题的步骤:

  1. 加载服务器
  2. 加载客户1
  3. 加载客户2
  4. 客户1
  5. 上的消息
  6. 客户1
  7. 上的消息
  8. 客户2
  9. 上的消息
  10. 结果,每个客户端仅显示一条消息

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通过在打印线类中为每个客户端创建单独的执行线程,现在可以从每个客户端执行消息。

马特。

最新更新