2016-01-16 3 views
0

Я создал программу Java, которая может загружать один файл с использованием URL-адреса, однако теперь я хочу, чтобы он загружал несколько файлов, используя несколько потоков. Могу ли я использовать один и тот же метод и перебирать список URL-адресов для получения файлов? Или кто-нибудь может порекомендовать путь для этого?Java-загрузчик - загрузка нескольких файлов

+0

Не могли бы вы опубликовать соответствующие части кода таким образом, мы можем увидеть, если она может быть использована в многопоточный путь? – SaschaM78

+0

Ваш вопрос слишком широк. Опубликуйте код, который у вас уже есть, и покажите, где именно вы застряли. Никто не собирается писать его для вас, все, что вы можете получить, это советы, и только если вы предоставите достаточную информацию. –

ответ

0

Вы могли бы использовать что-то вроде этого:

void download(URL url){ 
    ... 
} 

void downloadAll(URL[] urls){ 
    for(URL url : urls){ 
     Thread t = new Thread(() -> download(url)); 
     t.start(); 
    } 
} 

EDIT:
Как @LouisF. упомянутый рекомендуемый способ решить эту проблему - Executors. Таким образом, вместо простого примера с использованием Thread с, это было бы более правильным, но Aswell немного более сложный подход:

ExecutorService service = Executors.newChachedThreadPool(); 
for(URL url : urls) 
    service.submit(() -> download(url); 
+0

Я не совсем понимаю, что вы подразумеваете под этим, извините, это создает поток, он делает что-нибудь еще? –

+0

@ b.d Идея состоит в том, чтобы просто обернуть программу для загрузки файлов в отдельный метод, который требует только самых основных параметров и запускает этот метод из потока. Я оставил вам саму программу загрузки. Остальное - это самый распространенный способ решить эту проблему параллельного выполнения. – Paul

+0

Нельзя использовать Thread напрямую, но больше исполнителей и задач. Вы можете обратиться к пункту 68 эффективного Java (2-го издания) и этой ссылке http://baptiste-wicht.com/posts/2010/09/java-concurrency-part-7-executors-and-thread-pools.html для пример –

Смежные вопросы