我正嘗試使用ExecutorService並行地下載文件來實現多線程。以下是我的代碼java中的多線程文件下載
public void downloadFiles(List<String> filenames, final String fileSavePath) {
if (filenames != null && filenames.size() > 0) {
List<Callable<Void>> jobs = new ArrayList();
for (final String fileName : filenames) {
jobs.add(new Callable() {
public Void call() throws Exception {
downloadFile(fileName, fileSavePath);
return null;
}
});
}
performJobs(jobs);
}
}
我的要求是,我想要在所有文件下載成功後從此方法返回狀態。我不知道如何做到這一點。我無法從外部類訪問內部類的變量。
任何意見將是明顯的。
謝謝
嗨Sujay, 感謝我實現了它的建議,它工作正常。 「私人布爾performJobs(列表<可贖回>作業){ \t \t嘗試{ \t \t \t布爾jobDone = FALSE; \t \t \t列表<未來>期貨= service.invokeAll(作業); \t \t \t用於(將來未來:期貨){ \t \t \t \t jobDone =的Future.get(); \t \t \t \t如果(!jobDone) \t \t \t \t \t return jobDone; \t \t \t} \t \t \t return jobDone; \t \t} catch(Exception e){ \t \t \t throw new IllegalStateException(e); \t \t} finally { \t \t \t service.shutdown(); \t \t} \t}' 這適用於我 –
Yahiya