concurrent包提供了Executors工具类,利用它可以创建各种不同类型的线程池。
单线程的线程池:
固定数目线程的线程池:
每接收一个请求,就创建一个线程来执行:
单线程具有周期调度功能的线程池:
多线程,有调度功能的线程池:
不同类型的线程池,其实都是由前面的几个关键配置参数配置而成的。
在《阿里巴巴Java开发手册》中,明确禁止使用Executors创建线程池,并要求开发者直接使用ThreadPoolExector或ScheduledThreadPoolExecutor进行创建。这样做是为了强制开发者明确线程池的运行策略,使其对线程池的每个配置参数皆做到心中有数,以规避因使用不当而造成资源耗尽的风险。