入力ストリームからファイルチャネルにバイトを転送しています。プロセッサとファイル io はネットワークよりも何倍も高速であるため、データの転送中にスレッドが何度も一時停止することは明らかです。ファイルをダウンロードするためのパイプラインの概念を実装して、一時停止するたびにスレッドが次の取得要求を処理するようにすることは可能ですか?単一のスレッドが複数の取得要求を処理していますか? ここに私の簡単な実装があります:
while (start < end && currentState.get() == 1) {
delta = fileChannel.transferFrom(inputChannel, start, 8192);
start += delta;
}
速度を改善するための他のアイデアは大歓迎です。