Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “线程”;积木;或;停止“;在我的代码中的某一点-网络/服务器_Java_Multithreading_Networking - Fatal编程技术网

Java “线程”;积木;或;停止“;在我的代码中的某一点-网络/服务器

Java “线程”;积木;或;停止“;在我的代码中的某一点-网络/服务器,java,multithreading,networking,Java,Multithreading,Networking,代码在“等待…6”处停止。。由于某种原因,当我启动新线程时,当前线程就停止了。我试过几种不同的方法,但都没办法解决——我想我做错了很简单的事情 我做错了什么?ClientHandler在其构造函数中做了什么?您尝试过单步执行代码吗?我刚刚发现,当ClientHandler执行此操作时,代码正在停止,oiStream=new ObjectInputStream(sock.getInputStream())。您可能希望将所有网络代码移动到ClientHandler的run方法中。好的,VGR,我会尝

代码在“等待…6”处停止。。由于某种原因,当我启动新线程时,当前线程就停止了。我试过几种不同的方法,但都没办法解决——我想我做错了很简单的事情


我做错了什么?

ClientHandler在其构造函数中做了什么?您尝试过单步执行代码吗?我刚刚发现,当ClientHandler执行此操作时,代码正在停止,oiStream=new ObjectInputStream(sock.getInputStream())。您可能希望将所有网络代码移动到ClientHandler的
run
方法中。好的,VGR,我会尝试一下。
    public class ServerRunnable implements Runnable {

    @Override
    public void run() {
        while (true) {
            try {
                System.out.println("Waiting...");
                Socket sock = socket.accept();
                System.out.println("Waiting... 2");
                ObjectInputStream stream = new ObjectInputStream(sock.getInputStream());
                Object object = stream.readObject();
                System.out.println("Waiting... 3");
                if (object instanceof Client) {
                    Client c = (Client) object;
                    conns.put(c, sock);
                    System.out.println("Waiting... 4");
                    ObjectOutputStream oos = new ObjectOutputStream(sock.getOutputStream());
                    oos.flush();
                    System.out.println("Waiting... 5");
                    output.put(sock, oos);
                    sendMessage(new Message("[" + c.getClientType() + "] " + c.getName() + " connected."));
                    System.out.println("Waiting... 6");
                    threads.put(c, new Thread(new ClientHandler(sock, c)));
                    threads.get(c).start();
                    System.out.println("Waiting... 7");
                    updateClientList();
                    System.out.println("Waiting... 8");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}