ExecutorService exec = Executors.newFixedThreadPool(8);
List<Future<Object>> results = new ArrayList<Future<Object>>();
// submit tasks
for(int i = 0; i < 8; i++) {
results.add(exec.submit(new ThreadTask()));
}
...
// stop the pool from accepting new tasks
exec.shutdown();
// wait for results
for(Future<Object> result: results) {
Object obj = result.get();
}
class ThreadTask implements Callable<Object> {
public Object call() {
// execute download
...
return result;
}
}
上面的代碼沒有顯示出我期望的結果。更詳細地說,我正在爲android做一個下載管理器。這些線程用於分段下載文件。因爲,每個細分可能需要不同的時間來下載,我認爲這是問題所在。Android:等待線程完成執行方法
然後我嘗試在方法內使用一個簡單的數字返回。然後線程開始給出預期的結果。
因此,作爲一個解決方案,我想實現一個方法來等待所有的線程執行完的。在上面的代碼中,我該如何等待所有線程完成他們的工作?我想我必須使用wait()
方法,但我不知道該怎麼做。希望你能幫助解決這個問題。
謝謝你的時間。
'上面的代碼不告訴我我expected.'什麼是預期的結果,什麼是你看到的結果嗎? – 2012-07-07 12:58:42
什麼是不工作的代碼?它不會終止嗎? – Tudor 2012-07-07 13:15:05
@JohnVint:edited :) – don 2012-07-07 14:00:07