gpt4 book ai didi

java - 如何在 Android 上解锁 InputStream.read()?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:52 25 4
gpt4 key购买 nike

我有一个线程,其中循环调用了 InputStreamread() 方法。当没有更多字节可读时,流将阻塞直到新数据到达。

如果我从另一个线程在 InputStream 上调用 close(),流将关闭,但是阻塞的 read() 调用仍然被封锁。我假设 read() 方法现在应该返回值 -1 以指示流的结尾,但事实并非如此。相反,它会再阻塞几分钟,直到发生 tcp 超时。

如何解锁 close() 调用?

编辑:

显然,当阻塞read() 调用对应的流或套接字是close() 时,常规JRE 将立即抛出SocketException >'。但是,我使用的 Android Java 运行时不会。

任何有关 Android 环境解决方案的提示都将不胜感激。

最佳答案

只有在有可用数据时才调用 read()

做类似的事情:

    while( flagBlock )
{
if( stream.available() > 0 )
{
stream.read( byteArray );
}
}

设置flagBlock停止读取。

关于java - 如何在 Android 上解锁 InputStream.read()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com