首页 > 项目 > 当前页面

如果线程池里提交了多个任务,通过future来获取结果,需要配合countdown一起使用吗

2026-07-01 NEW个对象

一般情况下不需要。 Future 本身就可以通过 get() 获取异步任务的执行结果,当遍历所有 Future 并调用 get() 时,实际上已经完成了等待所有任务结束的功能。CountDownLatch 的作用是等待多个线程执行完成,它并不负责保存任务结果,因此通常用于只关心任务是否完成、不关心返回值的场景。



如果既需要等待所有任务完成,又需要获取执行结果,理论上可以同时使用 Future 和 CountDownLatch,但这会造成职责重复。实际项目中,我更倾向于使用 CompletionService 按完成顺序获取结果,或者在 JDK 8 及以上直接使用 CompletableFuture.allOf(),既能等待所有任务完成,又能方便地获取结果和处理异常,代码也更加简洁。


相关文章

NEW个对象 NEW个对象
JAVA是世界上最好的语言