我正在嘗試使用線程進行多重計算。 然後,我需要確保所有線程都完成其工作後,對結果進行一些操作。多線程加入並獲取返回值
這裏的基本代碼:
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