Задать вопрос

Проблема скачки изображений в многопоточном режиме?

Здравствуйте.
У меня имеется следующая проблема:

Через запросы к ajax.googleapis.com/ajax/services/search/ я получаю json ответы и по полученным url я создаю новые потоки с загрузчиком изображения:

for(final GoogleResponseData responseData : googleResponse.getResults()) {
////
	new Thread() {
		@Override
		public void run() {
			try {
				new ImageDownloader().downloadImage(responseData.getUrl(), path, fileName);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}.start();
////
}


код загрузчика:

private void downloadImage(String imageUrl, String path, fileName) throws IOException {
	URL u = new URL(imageUrl);
	
	String type = imageUrl.substring(imageUrl.lastIndexOf("."));
	
	URLConnection connection = u.openConnection();
	
	File imageFile = new File(path);
	imageFile.mkdirs();
	OutputStream os = new FileOutputStream(path  + fileName + type);
	try {
		IOUtils.copy(connection.getInputStream(), os);
	} catch(IOException e) {
		e.printStackTrace();
	} finally {
		os.close();
	}
}


В итоге у меня большая часть изображений либо не сохраняются, либо не до конца скачиваются.
Хотя если это делать в один поток все изображения выкачиваются без проблем.
  • Вопрос задан
  • 2742 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
student13
@student13
Судя по приведенному коду все вроде норм, нужно больше кода. Есть догадка, что вы не правильно ждете завершения всех потоков и завершаете работу недождавшись окончания скачи на всех потоках.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mardy_bum
@mardy_bum
Возможно что большинство выкачиваемых картинок находятся на одном хосте и когда ваши потоки толпой ломятся на сервак, он их дропает из-за каких-либо своих лимитов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы