【发布时间】:2011-09-28 14:27:37
【问题描述】:
我有一个线程,其中InputStream 的read() 方法在循环中被调用。当没有更多字节要读取时,流将阻塞,直到有新数据到达。
如果我从另一个线程调用InputStream 上的close(),流将关闭,但阻塞的read() 调用仍然被阻塞。我会假设read() 方法现在应该返回值-1 以指示流的结束,但事实并非如此。相反,它会再阻塞几分钟,直到发生 tcp 超时。
如何解除对close() 呼叫的阻止?
编辑:
显然,当阻塞read()调用对应的流或套接字是close()'d时,常规JRE会立即抛出SocketException。但是,我使用的 Android Java 运行时不会。
任何有关 Android 环境解决方案的提示将不胜感激。
【问题讨论】:
-
我不是 java 人,但如果你控制应用程序/线程向下发送流,你不能发送一个读者可以使用的消息结束字节/几个字节确定应该关闭流?
标签: java android sockets inputstream