3

目前我正在使用 aObjecInputStream从 a 中读取Socket,并且使用这个简单的代码一切正常:

ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Object response = input.readObject();

现在我想以某种方式取消读取,而不关闭流,以便我以后可以再次读取它。是否可以?

编辑:我想取消读取只是因为它阻塞了程序流程。我不需要两次阅读相同的信息。我只想取消它,以便我可以发送另一个请求,然后读取(另一个)响应。

4

3 回答 3

2

看看有什么ObjectInputStream.markSupported()回报。如果它返回true,您可以ObjectInputStream.mark()在开始时调用,然后调用ObjectInputStream.reset()以将其倒InputStream回您标记的位置,以便以后重复使用。

于 2009-11-25T04:38:39.787 回答
2

您可以使用PushBackInputStream来完成此操作。读取一些字节后,您可以取消读取这些字节。

于 2009-11-25T04:39:26.540 回答
2

如果您有某种“主”线程,那么您应该执行 I/O 关闭它。有一个线程专门用于读取和某些扩展处理输入。如果基于事件,则将结果排队到主线程,如果使用共享状态设计,则修改模型。

于 2009-11-25T07:31:29.750 回答