リモートサーバーに画像をアップロードするために以下のコードを使用しています。以下を使用すると、すべての画像がリモートサーバーに同時にアップロードされます。
List<Future<String>> futureList = new ArrayList<Future<String>>();
ExecutorService execService = Executors.newFixedThreadPool(Images.size());
for (IImage image : Images) {
try {
//execService.execute(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
//Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
Log.d("","futureList Size:"+futureList.size());
} catch(Exception e){
execService.shutdown();
}
以下のコードを使用するたびに
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
//Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
すべての将来のオブジェクトを、runnable から戻るとすぐに futurelist に追加します (すべての画像のアップロードが完了するまで runnable で待機しません (バックグラウンドのアップロード処理が進行中です))。
しかし、上記のコードの行の下でコメントを外すたびに、すべての画像のアップロードが成功した後、実行可能から返されます。
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
私のコードに何か問題がありますか?一度にリモートサーバー接続を増やしても大丈夫ですか?またはサーバーに負荷がかかっていますか?並列プログラミングJavaを使用して画像をアップロードする方法?ガイダンスを教えてください?
submit()
とexecute()
関数は同じ効果がありますか?