<分区>
最近我一直在使用VM 模板将一些内容写入.vm 文件,然后将vm 文件的内容作为.txt 文件存储在我的计算机中。起初,我一直在为每个文件创建过程创建单独的线程,这并不好,因为在短时间内没有大量线程创建。所以我想使用线程池
考虑以下方法
public void runHugeNoOfShortTimeTasks() {
ExecutorService service = Executors.newFixedThreadPool(100);
for(int i=0;i<10000;i++){
service.submit(runnableWriteToVMAndConvertToTXTFile()); // Each process would take around 1-3 seconds
}
}
现在考虑完成 for 循环需要 0.5 秒。如果循环结束,进程将退出 runHugeNoOfShortTimeTasks()
方法。但是 ExecutorService 的范围是在那个方法内,那么队列中的线程和正在处理的线程会发生什么?一旦进程退出 runHugeNoOfShortTimeTasks()
方法,Executor 服务是否会被垃圾回收?
另一件事是,一旦队列中的所有线程都完成(如果它不会被垃圾收集),固定线程池 100 会发生什么。它会一直坐在我的内存中等待线程,还是会在所有线程完成后被销毁?
也许我的理解方式完全错误,如果我错了请澄清我..