javasocketscrashbufferedreaderbuffered

Program freezes on bufferedreader close


Program freezes when closing buffered reader. Using forge modding API for minecraft, however I've had this issue before with standalone server side code. This particular code worked fine and then randomly started giving me this issue, not sure how to go about fixing this..

The close method:

public static void closeConnection() {
    if (keepConnection) {
        keepConnection = false;

        try {

            bufferedReader.close();
            printWriter.close();
            socket.close();
        }
        catch (IOException e) {

            e.printStackTrace();
        }

        finally{

            token = null;
        }
    }

}

I have checked to ensure that this is indeed where the freeze is occurring. Any ideas?


Solution

  • Not possible. BufferedReader.close() doesn't do anything that blocks. You don't even need it. PrintWriter.close() will close everything. Remove it.

    The only operation that can freeze here is closing the PrintWriter, which implies flushing its buffer, and the reason for that must be that the peer is a long way behind reading the output of this program, or isn't reading it at all.