一个关于流对象创建的问题

socket通信,debug表示在创建对象输入流的时候程序卡死,希望能帮忙看看。
在创建这个流之前已经创建了三个流。


class ClientRecieve implements Runnable{
    Socket socket;
    InputStream is;
    ObjectInputStream ois = null;

    public ClientRecieve(Socket socket) {
        this.socket = socket;
        try {
                 //问题就出现下面语句,单步执行卡死
            ois = new ObjectInputStream(socket.getInputStream());

        } catch (IOException e) {
            System.out.println("客户端输入流失败。");
            Closeutil.closeAll(is, ois);
            e.printStackTrace();
        }
    }

    public Message recieve(){
        Message message = null;
        try {
             message = (Message) ois.readObject();
            System.out.println("客户端接接收信息成功");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return message;
    }

    @Override
    public void run() {
        while(true){
            Message message;
            message = recieve();

        }
    }
}


new ObjectInputStream(socket.getInputStream());的时候,已经开始从服务端读消息了,
卡死的原因是这一行执行的时候在等待服务器端发消息。

给你简单的改造了一下


class ClientRecieve implements Runnable{
    Socket socket;
    InputStream is = null;
 
    public ClientRecieve(Socket socket) {
        this.socket = socket;
        try {
            //问题就出现下面语句,单步执行卡死
            is = socket.getInputStream();
 
        } catch (IOException e) {
            System.out.println("客户端输入流失败。");
            Closeutil.closeAll(is);
            e.printStackTrace();
        }
    }
 
    public Message recieve(){
        Message message = null;
        try {
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
             message = (Message) ois.readObject();
            System.out.println("客户端接接收信息成功");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return message;
    }
 
    @Override
    public void run() {
        while(true){
            Message message;
            message = recieve();
 
        }
    }
    
}


报错了吗