一、涉及到的类和接口:
二、通过Executors工具类创建的到底是什么
private static Executor executor = Executors.newXXX();
-
Executors是Java1.5时引入的创建线程的工具类,主要可以创建如下几种线程池:
- newFixedThreadPool()
- newSingleThreadExecutor()
- newCachedThreadPool()
- newScheduledThreadPool()
- newWorkStealingPool(1.8时引入)
上面只是方法名,具体根据需要去使用哪个重载的构造函数。具体介绍后续补上,现在只介绍关系,知道通过上述几种方式可以创建线程池就可以了。
- 上面几种方式创建的线程池的返回值类型都是ExecutorService接口类型,而ExecutorService接口又是继承自Executor接口。
- 我们知道接口是无法实例化的,那么返回的ExecutorService接口又是哪个实例呢,进入上述一个创建线程池的方法中可以看到,调用的是ThreadPoolExecutor的构造器。
- 进入ThreadPoolExecutor类里面,发现ThreadPoolExecutor又是继承自AbstractExecutorService类,所以返回的ThreadPoolExecutor的实例就合情合理了。