【强制】线程资源必须通过线程池提供,不允许在应用中自行显示创建线程。
也就是说,我们尽量使用线程池
【强制】线程池不允许使用Executors创建,而是通过ThreadPoolExecutor的方式创建,这样的处理方式能让编写代码的工程师更加明确线程池的运行规则,避免资源耗尽的风险。
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize:线程池中核心线程的数量
maximumPoolSize:线程池中最大线程的数量
keepAliveTime:当前线程数量超过corePoolSize时,空闲线程的存活时间
unit:keepAliveTime的时间单位
workQueue:任务队列,被提交但尚未被执行的任务存放的地方
threadFactory:线程工厂,用于创建线程,可使用默认的线程工厂或自定义线程工厂
handler:由于任务过多或其他原因导致线程池无法处理时的任务拒绝策略。