线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列然后茬线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候等其它线程执行完毕,再从队列中取出任务来执行他的主要特点为:线程复用;控制最大并发数;管理线程。
每一个 Thread 的类都有一个 start 方法 当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那麼该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法 我们可以继承重写Thread 类,在其 start 方法中添加不断循环调用传递过来的 Runnable 对象 这就是线程池的实现原理。循环方法中不断获取
线程池管理器:用于创建并管理线程池;
工作线程:线程池中的线程;
任务接口:每个任务必须实现的接口用于笁作线程调度其运行;
任务队列:用于存放待处理的任务,提供一种缓冲机制
corePoolSize:指定了线程池中的线程数量。
maximumPoolSize:指定了线程池中的最大線程数量
keepAliveTime:当前线程池数量超过 corePoolSize 时,多余的空闲线程的存活时间即多次时间内会被销毁。
workQueue:任务队列被提交但尚未被执行的任务。
threadFactory:线程工厂用于创建线程,一般用默认的即可
handler:拒绝策略,当任务太多来不及处理如何拒绝任务。