关于线程池的创建问题
来源:6-10 向线程池提交任务

那条时光流过的小巷
2020-01-30
为什么不使用ThreadPoolExecutor去创建线程池,而是使用ExecutorService去创建提交,这2者有什么区别呢?在实际工程项目中,通常是使用哪一个?
写回答
1回答
-
首先,创建线程池有两种方式:第一种是直接使用ThreadPoolExecutor
类的构造方法,通过new关键字来创建,缺点是参数比较多不好记,优点是创建者可以精准掌握线程池的构成,比如说:最大线程数是多少,阻塞队列最大能容纳多少任务。第二种是使用工具类Executors,他能够创建几种比较常用的线程池,比如:newCachedThreadPool。但他的本质也是在调用new ThreadPoolExecutor再创建,只不过帮你默认了一些参数而已。再说ExecutorService,上面说的两种创建方式创建出来的线程池实例,都是ExecutorService接口的实现类,这个接口提供了提交线程任务的方法。
最后,实际工程中很少手工创建线程池,一般都是让容器来管理线程池。关于这部分,年后课程有个更新,会讲解如果通过线程池异步导出Excel表格,应该能够提供一些参考。
00
相似问题