私はJava 7でプログラムを構築しています。ダウンロードしたファイルの値によっては、バックエンドサーバーから複数のファイルをダウンロードする必要があります。Javaの非同期タスク内でビジー待機を実装する
私は説明します:
を第一に、私のプログラムがこのファイルをダウンロードするファイルの値が含まれているAsyncTaskを経由してファイルをダウンロードします。 onPostメソッドは、これらのファイルをダウンロードし、アプリデータに操作した後に配列リストに挿入する別のメソッドを呼び出します。
ここで、これらのAsyncTaskの終了を処理するために、ダウンロードするファイルの数を知っていることを考慮して、別のAsyncTaskを作成してビジー待機を作成しました。 whileループのファイル番号と同じです。
私の質問は、AsyncTaskで待っていると、OSが実行中のプロセッサをリリースする機能を無効にするか、それとも何も心配しないことですか?
私は、ファイルをより速くダウンロードするためにプロセッサをロックすることを待っていませんか、それとも問題ありませんか?
私は非同期タスクに独自のapocがあり、必要に応じてスリープ状態に入ると仮定しているため、このビジー状態の待機によってプロセッサの乱用はないと仮定します。
ダウンロードする必要があるファイルの量は処理時間に影響しますか?そして、はいの場合、データを含む1つのファイルをダウンロードする方が、ダウンロードを複数の小さなファイルにマルチスレッドするよりも優れていますか?
最後に、自分自身のビジー待機をAsyncTaskに書き込むことをお勧めしますか?
私はすぐにいくつかのコードスニペットを追加します...
1.ビジー待機をしないでください。 2.別の解決策を見つける... :)あなたのコードは、すべてのダウンロードが完了したときを知っています - リストに最後に追加されたものは、そのリストがいっぱいであり、そこでイベントが発生することがあります。 – ZhongYu