一.线程池处理流
1.当有新的任务提交时线程池会判断核心线程池是否已满,不满则创建线程执行任务,当核心线程池已满会判断是否有空闲线程,有则交由空闲线程处理任务。
2.当核心线程池中没有空闲线程时会判断任务队列是否已满,不满则将任务存储在队列中。
3.当任务队列已满,会判断最大线程池数是否已满,不满则创建线程执行任务。
4.当最大线程池已满则会根据所设置的策略处理无法执行的任务,默认抛出RejectedExecutionException异常。
二.线程池配置参数
1.CorePoolSize:核心线程池大小。
2.QueueCapacity:任务队列容量大小。
3.MaxPoolSize:线程池最大线程数。
4.KeepAliveSeconds:线程空闲时间,当线程空闲时间达到该值时会销毁线程,直到线程数量等于核心线程大小,设置时需要传入时间以及时间单位(TimeUtil中有定义)。
5.RejectedExecutionHandler:拒绝策略,当线程池数量达到最大线程数时会执行拒绝策略,默认抛出RejectedExecutionException异常。