线程池
说一下线程池的核心参数
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueueworkQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) 提交任务 -> 核心线程数是否已满(核心线程执行) -> 阻塞队列是否已满(放到队列里) -> 线程数是否小于最大线程数(创建非核心线程) -> 拒绝策略
corePoolSize 核心线程数目。 maximumPoolSize 最大线程数目 - (核心线程 + 救急线程的最大数目)。 keepAliveTime 生存时间 - 救急线程的生存时间,生存时间内没有新任务,此线程资源会释放。 unit 时间单位 - 救急线程的生存时间单位,如秒、毫秒等。 workQueue 当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务。 threadFactory 线程工厂 - 可以定制线程对象的创建,例如设置线程名字、是否是守护线程等。 handler 拒绝策略 - 当所有线程都在繁忙,workQueue也放满时,会触发拒绝策略。