我将字节从输入流传输到filechannel。由于处理器和文件io比网络快很多,所以很明显线程会在传输数据时暂停很多时间。是否有可能实现下载文件的流水线概念,以便在每次暂停之间线程处理下一个get请求所以单个线程正在处理多个get请求?这是我的简单实现:
while (start < end && currentState.get() == 1) {
delta = fileChannel.transferFrom(inputChannel, start, 8192);
start += delta;
}
欢迎任何提高速度的其他想法。
答案 0 :(得分:2)
有两种方法:
完全将您的代码重写为面向事件的范例(最好的办法就是使用Netty);
使用Java对多线程的出色支持。在这种情况下,您可以保留大部分阻塞I / O代码。