2016-11-21 199 views
0

晚上好!Java线程意外停止

我想用java和套接字编码服务器/客户端。

发送消息的过程工作正常,但我不知道为什么,当我启动第二个客户端并发送第一个消息后,第一个客户端被阻塞并且不再发送消息。

它必须是一个服务器端问题,因为我已经调试了整个代码,发现问题在这个时候,一旦它离开它似乎ID不会再次回来。 我的理论是它以某种方式停止或者迭代器可能停止运行。

你能检查一下并给我一些指导吗?已经花了4h就已经这样。

非常感谢!

编辑:所以正如我一直问我已经减少了代码,我认为是问题的核心。正如我通过调试检查一样,退出时,线程自行停止。

服务器:

new Thread() { 
      public void run() { 

       String inputLine; 
       // Input Thread 
        while ((inputLine = clientSocket.read_str()) != null) { 
         // L'iterator ha de començar des del principi cada cop que que es comença el while 
         Iterator<MySocket> keyIterator = connections.keySet().iterator(); 
         while (keyIterator.hasNext()) { 
          MySocket sock = keyIterator.next(); 
          sock.write_str(inputLine); 
         } 
        } 
        clientSocket.close(); 

        removeUser(clientSocket); 
      } 
     }.start(); 
+0

我们不能只是开始阅读你的代码块。请尽量减少所需的代码来重现您的问题,即[MVCE](http://stackoverflow.com/help/mcve)。 – Mordechai

+0

已编辑!为了麻烦Sry。 –

+0

@Arnau EC它仍然没有清除哪一行是第53行 – Acewin

回答

0

我发现这个问题,就是我用ClientSocket的用于everythread,我认为它会在不同的clientSockets工作,但它不是,所以一旦插座进行了更新,它只能从该套接字写入/读取。

愚蠢的解决方案,遗憾的是浪费时间。

谢谢大家。