我正在尝试使用线程进行多重计算。 然后,我需要确保所有线程都完成其工作后,对结果进行一些操作。多线程加入并获取返回值
这里的基本代码:
private class Runner implements Runnable {
private String _result = "fail";
public String get_results() {
return _result;
}
public void run() {
_result = "do complex calculation";
}
}
public void test() {
List<Thread> threads = new ArrayList<Thread>();
List<Runner> threadObjects = new ArrayList<Runner>();
for (int i = 0; i < 10; i++) {
Runner runner = new Runner();
Thread t = new Thread(runner);
t.start();
threads.add(t);
threadObjects.add(runner);
}
for (Thread thread : threads) {
try {
thread.join();
} catch (InterruptedException ex) {
}
}
for (Runner threadObject : threadObjects) {
System.out.println(threadObject.get_results());
}
}
我的问题是,在上面的代码中常见的还是不错的方法来获得计算的价值? 如果不是,请提出更好的建议。 也有时我得到了runner.get_results()回应=“失败”,似乎计算根本没有处理。
感谢
_Also有时我得到亚军.get_results()reponse =“fail”_这不应该与您发布的代码一致。 –
取决于一点,但寻找'未来'和'执行者'。常见的做法是,你很少看不到直接使用的'Thread'类。 – zapl
您不应该从此代码获取'=“失败”',因为您在创建的每个线程上都调用了'.join()'。 – 3kings