你怎么理解线程池?
线程池的设计?
我去读源码,我要先看它的构造函数。我去考虑作者的设计,我去想:作者认为这几个参数是核心的参数,因此将它作为了这个类的构造函数。作者想:如果人们用了我这个类,他们可能需要这些灵活的配置。因此写下了这些构造函数。
我想,在学习编程语言的过程中总要有一种信念,就是:这样的设计一定有它的道理存在。除非我有足够的证据推翻它,证明它是不高效、不可靠的。因为我能接触到的代码,一定是已经足够高效、优雅、可供学习的了。
有关线程池的构造函数,最核心的有以下内容。通过构造函数,能够看到它最初的生命状态。
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
主要的参数是:核心线程数、最大线程数、空闲线程存活时间、时间单位、任务队列、线程工厂、拒绝策略。