Удобство
Да, многопоточность в яве действительно сделана хорошо. Инструменты удобны и если хочется получить какой-то высокоуровневый инструмент для многопоточной программы, то он существует (а если нет, то один из существующих наверняка лучше того, который хотелось увидеть).
Простой пример:
Да, многопоточность в яве действительно сделана хорошо. Инструменты удобны и если хочется получить какой-то высокоуровневый инструмент для многопоточной программы, то он существует (а если нет, то один из существующих наверняка лучше того, который хотелось увидеть).
Простой пример:
private static String[] sites =
{"www.google.com", "www.ya.ru", "www.yahoo.com"};
//создание пула потоков
ExecutorService service = Executors.newCachedThreadPool();
List<Future<String>> futures =
new ArrayList<Future<String>>();
for (int i = 0; i < sites.length; ++i) {
//запуск нового потока с параметром из массива
Future<String> future =
service.submit(new ThreadWorker(sites[i]));
futures.add(future);
}
//на этом этапе все потоки запущены
System.out.println("threads started");
for (Future<String> future : futures) {
//забираем результат выполнения потока
//если поток ещё не завершился, то происходит ожидание
System.out.println("get result from Future: " + future.get());
}
//сообщаем пулу о том, что закончили пользоваться потоками
service.shutdown();
Подробнее?