Организация очереди нескольких загрузок в поисках API-интерфейса для потребителя-производителя - PullRequest
1 голос
/ 26 июня 2011

У меня есть приложение (сервлет, но это не очень важно), которое загружает набор файлов и анализирует их для извлечения информации.До сих пор я выполнял эти операции в цикле: - извлекал новый файл из Интернета - анализировал его.

Многопоточный менеджер загрузок кажется лучшим решением этой проблемы, и я хотел бы реализовать егов кратчайшие сроки.

Некоторые загрузки зависят от других (поэтому этот набор частично упорядочен).

Многопоточное программирование сложно, и если бы я мог найти API для этого, я был бы очень счастлив.Мне нужно поместить группу файлов (упорядоченных) в очередь и получить первую группу файлов, которая полностью загружена.

Вам известна какая-либо библиотека, которую я мог бы использовать для достижения этой цели?

С уважением, Стефан

1 Ответ

2 голосов
/ 26 июня 2011

Вы можете сделать что-то вроде:

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 - это первый в очереди.

Возможно, вы захотите использовать PriorityBlockingQueue, который упорядочит объекты Download в соответствии с их методом Comparable.См. API здесь для получения более подробной информации.

Надеюсь, это поможет.

...