Я использую приведенный ниже код для загрузки изображений на удаленный сервер. Когда я использую ниже, он загружает все изображения одновременно на удаленный сервер.
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);
добавляет все будущие объекты в список будущих объектов, сразу же возвращаясь из работоспособного состояния (не дожидаясь запуска в рабочем состоянии до завершения загрузки всех изображений (идет загрузка в фоновом режиме)
Но всякий раз, когда я комментирую нижнюю строку кода выше, после успешного завершениязагрузка каждого изображения, которое он возвращает из запускаемого файла.
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
есть ли что-то не так в моем коде и нормально ли подключаться к удаленному серверу чаще, или какая-либо нагрузка на сервер? Как загрузить изображения?с помощью параллельного программирования Java? Пожалуйста, дайте нам руководство?
Имеют ли функции submit()
и execute()
одинаковый эффект?