搜索
写经验 领红包

线程池的运行流程是什么(线程池的运行流程包括)

导语:线程池的运行流程

1)、线程池会判断线程池里的线程(线程总数是30,则coreSize有可能是10)是否都在执行任务,若当前只有9个线程在工作,则总核心线程池中再创建一个新的线程来执行任务,如果当前已经有10个线程在工作了,则进入下一步;

2)、线程池判断工作队列是否已满,如果如果工作队列没有满,则将新提交的任务,存储在这个工作队列里,如果工作队列已满,则进入下一个流程

3)、线程池判断全部线程是否都在工作,若没有则创建一个新的工作线程来执行任务,若全部都在工作,则交给饱和策略来处理这个任务。

线程池的创建new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds, runnableTaskQueue, handler)

最后一个参数handler就是饱和策略,java线程池提供了四种策略控制方式

1)AbortPolicy:直接抛出异常

2)CallerRunsPolicy:只用调用者所在线程来运行任务

3)DiscardOldestPolicy:丢弃队列中最近的一个任务,并执行当前任务。

4)DiscardPolicy:不处理,丢弃掉。

本文内容由小涵整理编辑!