在输入流中等待时执行某些操作

时间:2014-08-24 11:56:44

标签: java multithreading apache-httpclient-4.x pipelining

我将字节从输入流传输到filechannel。由于处理器和文件io比网络快很多,所以很明显线程会在传输数据时暂停很多时间。是否有可能实现下载文件的流水线概念,以便在每次暂停之间线程处理下一个get请求所以单个线程正在处理多个get请求?这是我的简单实现:

while (start < end && currentState.get() == 1) {
      delta = fileChannel.transferFrom(inputChannel, start, 8192);
      start += delta;
      }

欢迎任何提高速度的其他想法。

1 个答案:

答案 0 :(得分:2)

有两种方法:

  1. 完全将您的代码重写为面向事件的范例(最好的办法就是使用Netty);

  2. 使用Java对多线程的出色支持。在这种情况下,您可以保留大部分阻塞I / O代码。