我是java.util.concurrent
包的新手。我正在嘗試寫一些樣本。 這裏是我的一些示例代碼片段:Java併發性:如何異步獲得工作線程的響應
for (MyTask task : tasks) {
Future<Boolean> result = task.getResult();
try {
if (result.isCancelled()) {
logger.info("processResults(): cancelled: "+ ((MyTask) task).getName());
} else if (result.get() == false) {
logger.info("processResults(): Failed : "+ ((MyTask) task).getName());
} else {
logger.info("processResults(): successful: "+ ((MyTask) task).getName());
tasks.remove(task);
continue;
}
} catch (Exception e) {
logger.warn("processResults(): Excepiton: " + e.getMessage());
}
}
我有一個關於從工作線程處理未來對象的一個問題。在我的循環中,任務的處理是按順序進行的;可以說,我需要處理來自工作線程的返回結果,如果我的第二個工作線程在第一個工作線程完成之前完成,在我的代碼中沒有辦法先處理第二個工作線程。
任何人都可以提出最好的方式來處理當前的threds。
感謝, Venkat Papana
感謝@Peter Lawrey,可以說,我的每個線程都會返回一些結果,我需要累積每個工作線程的所有結果。我怎樣才能做到這一點? –
閱讀我的答案,瞭解如何做到這一點。 – Bohemian
您可以讓每個線程累積結果。但是,如果您想要簡單,請使用「未來」,因爲在最後一項任務完成之前無法完成。 –