线程池其实就是一种多线程处理方式,处理过程是将任务添加到队列中,然后在创建线程后自动启动这些任务。这样可以节省很多时间。如果单单使用Thread来实现或者创建线程的话会浪费大量的资源,而且还好浪费大量的时间。
线程池的创建
线程池可以分为自动创建跟手动创建,自动创建体现在Executors工具类中,常见的可以创建newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor、newScheduledThreadPool;手动创建体现在可以灵活设置线程池的各个参数,体现在代码中。
线程池包括了7个参数:
核心线程数(corePoolSize):线程池维护的最小线程数量,核心线程创建后不会被回收。
最大线程数(maximumPoolSize):就是线程池中能够容纳的最大线程的数量;
空闲线程存活时间(keepAliveTime):就是除了核心线程之外的线程所能的存活的最大时间。
时间单位(TimeUnit):就是计算这个时间的一个单位
线程池任务队列(BlockingQueue):就是等待队列,任务能够储存在任务队列中等待被执行,执行的是先进先出原则。
创建线程的工厂(ThreadFactory):就是创建线程工厂
拒绝策略(RejectedExecutionHandler):当我们的任务满了之后就执行拒绝策略。