我不知道下面的是一個正確實施實現線程
ExecutorService pool = Executors.newFixedThreadPool(MAX_NSH_THREADS);
Set<Future<Void>> futureRequest = new HashSet<Future<Void>>();
for (String host : SomeCollection)) {
Callable<Void> callable = new FileExtractor(j);
Future<Void> future = pool.submit(callable);
futureRequest.add(future);
}
for (Future<Void> future : futureRequest) {
try {
future.get();
} catch (Exception e) {
logger.error(e);
}
}
pool.shutdown();
根據的Javadoc,future.get()
等待執行完成的每個線程,(據我所知)意味着對於每個未來,我們將等待分開收到結果。從那裏得到什麼好處呢,還是我做得不對?
你試圖得到什麼好處?這看起來好像會起作用,但是,是的,它只是等待所有的未來完成之後才關閉游泳池...... – elijah 2012-01-17 21:59:34