【发布时间】:2019-09-07 22:52:57
【问题描述】:
有一些关于 SO 的答案,但我正在寻找使用我的代码的解决方案以便清晰理解。
我使用 Executor 创建了工作线程,工作完成后,工作线程将结果返回给调用者(main)
工人
public class Worker implements Runnable {
private final int num;
public Worker(int num) {
this.num = num;
}
@Override
public void run() {
System.out.println("Starting job: " + num);
try {
Thread.sleep(2000);
System.out.println("end job:" + num);
String result = "result " + num; // how to pass all the results back to the caller
} catch (Exception e) {
e.printStackTrace();
}
}
}
工人测试
public class WorkerTest {
private static List<String> result = new ArrayList<>();
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
Runnable worker = new Worker(i);
executorService.execute(worker);
}
executorService.shutdown();
while(!executorService.isTerminated());
}
}
【问题讨论】:
标签: java multithreading