У меня есть цикл, например for (int i=1;i<=10;i++)
, и я хочу создать в нем 10 потоков, каждый из которых выполнит одну и ту же задачу по набору данных и вернет результат. Затем обработайте этот результат внутри цикла. Любые идеи, как это можно сделать?Многострочные потоки в Java
for (int i=1;i<=10;i++) {
Work w = new Work();
Thread t = new Thread(w);
w.getResultFromThread();
//process w
}
class Work implements Runnable {
public void run() {
//perform tasks
}
public int getResultFromThread() {
return result;
}
}
Я хочу, чтобы каждый поток работал параллельно, но когда я получаю результат один за другим.
Читайте об исполнителях; это именно то, что вы хотите здесь. – chrylis
Нить не вернет ничего, но Исполнитель может вернуть что-то обратно в вызывающий поток. Поэтому используйте исполнителя. 1) http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executor.html 2) http://www.javaworld.com/article/2078809/java-concurrency/java -101-the-next-generation-java-concurrency-without-the-pain-part-1.html – K139
Похоже, что здесь происходит фундаментальное непонимание параллели. Как вы можете * не * обрабатывать результаты один за другим, когда обработка выполняется во время цикла? –