一:线程池的实现原理:
提交一个任务到线程池中,线程池的处理流程如下:
1:判断线程池里的核心线程是否都在执行任务,如果不是(核心线程空闲或者还有核心线程没有被创建)则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则进入下一个流程。
2:线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的人物存储在这个工作队列里。如果工作队列满了,则进入下个流程。
3:判断线程池里的线程是否都处于工作状态,如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务。
二:线程池的优点:
线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理地使用线程池对线程进行统一分配、调优和监控,有以下好处:
1:降低资源消耗;
2:提高响应速度
3:提高线程的可管理性。
三:线程池的创建:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler handler)
corePoolSize:线程池核心线程数量
maximumPoolSize:线程池最大线程数量
keepAliverTime:当活跃线程数大于核心线程数时,空闲的多余线程最大存活时间
unit:存活时间的单位i
workQueue:存放任务的队列
handler:超出线程范围和队列容量的任务的处理程序。