先说结论:Future集合并不是等线程池执行完才开始遍历,而是线程池内的线程执行完一条Future集合就立即遍历一条
在使用线程池的业务场景下,我们经常需要获取线程执行的返回值,此时我们需要Callable对象当做线程池参数并用List<Future>
接收,然后遍历List<Future>
获取我们想要的值。
但是,如果List<Future>
是等线程池中所有的线程执行完后才开始遍历,就意味着List<Future>
集合可能会非常大,进而导致内存溢出程序崩溃。所以我们就来验证一下List<Future>
是会等待线程池执行完毕开始遍历还是只要线程执行完一条就遍历一条
大约 2 分钟