1

一連のファイルをダウンロードし、それらを解析して情報を抽出するアプリケーション (サーブレットですが、それほど重要ではありません) があります。今まで、私はこれらの操作をループで行っていました: - インターネット上の新しいファイルを取得する - それを分析する.

マルチスレッドのダウンロード マネージャーは、この問題のより良い解決策と思われるので、可能な限り最速の方法で実装したいと考えています。

一部のダウンロードは他のダウンロードに依存しています (したがって、このセットは部分的に順序付けされています)。

マルチスレッド プログラミングは難しいので、それを行うための API を見つけることができれば、とてもうれしいです。(順序付けられた) ファイルのグループをキューに入れ、完全にダウンロードされた最初のファイルのグループを取得する必要があります。

それを達成するために使用できるライブラリを知っていますか?

よろしく、ステファン

4

1 に答える 1

2

次のようなことができます。

BlockingQueue<Download> queue = new BlockingQueue<Download>();
ExecutorService pool = Executors.newFixedThreadPool(5);
Download obj = new Download(queue); 
pool.execute(obj); //start download and place on queue once completed
Data data = queue.take(); //get completely downloaded item

各ダウンロードの速度が同じでない場合は、別の種類のキューを使用する必要がある場合があります。BlockingQueue は先入れ先出しだと思います。

Comparable メソッドに従って Download オブジェクトを並べ替える PriorityBlockingQueue の使用を検討することをお勧めします。詳細については、こちらの APIを参照してください。

お役に立てれば。

于 2011-06-25T21:53:56.863 に答える