Hello! 欢迎来到小浪资源网!


BufferedInputStream转换速度慢?如何提升其效率?


BufferedInputStream转换速度慢?如何提升其效率?

解决 bufferedinputstream 转换速度低的问题

为了提升 bufferedinputstream 的转换速度,需要解决以下几个问题:

  1. 耗时内存等待:原始代码在读取完 http 数据后,将其全部放在内存中,等待耗时。应对方法是使用边读边写的流。
  2. 阻塞读取:读取数据时,响应一直处于等待状态。解决方案是使用非阻塞读取,例如 nio
  3. 未复用连接:http 请求连接未复用。建议使用 okhttp 等库复用连接。
  4. 资源未释放:响应会等待超时,并且内存会泄露。必须在使用后释放资源。

解决方案:

方案 1:原始流复制

优化原始代码的复制流方法,使用更大的缓冲区来提高效率。

while ((len = bis.read(buffer)) != -1) {     out.write(buffer, 0, len);      out.flush(); }

方案 2:使用流复制工具类

使用三方库中的流复制工具类,简化代码并提高效率。

ioutil.copy(bis, out);

方案 3:使用 nio 非阻塞传输

使用 nio 非阻塞传输,可以实现更快的流传输。

while (in.read(byteBuffer) != -1) {     // 写转读     byteBuffer.flip();     out.write(byteBuffer);     byteBuffer.clear(); }

相关阅读