0

我目前有一个简单的系统设置,其中 ObjectInputStream 直接从连接到客户端 Socket 输入流的 GZIPInputStream 读取:

        InputStream stream = s.getInputStream();

        GZIPInputStream gis = new GZIPInputStream(stream);

        ObjectInputStream input = new ObjectInputStream(gis);
        System.out.println(input);

        return input;

问题在于,ObjectInputStream 尝试读取流标头并开始阻塞线程。为什么会发生这种情况,和/或我怎样才能阻止这种情况发生?

4

1 回答 1

0

InputStream read() 将阻塞,直到数据可用、检测到流结束或抛出异常。为防止主代码路径阻塞,请使用后台线程进行读取。当然,后台线程将阻塞,直到字节可用。意外阻塞可能是发送方的错误。

于 2012-03-10T07:19:30.017 回答