创建线程池对象 :
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(核心线程数量,最大线程数量,空闲线程最大存活时间,时间单位,任务队列,创建线程工厂,任务的拒绝策略);
线程池处理流程
-
线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作 线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。
-
线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这 个工作队列里。如果工作队列满了,则进入下个流程。
-
线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程 来执行任务。如果已经满了,则交给饱和策略来处理这个任务
提交方法
可以使用两个方法向线程池提交任务,分别为execute()和submit()方法。 submit()方法用于提交需要返回值的任务。线程池会返回一个future类型的对象,通过这个 future对象可以判断任务是否执行成功,并且可以通过future的get()方法来获取返回值,get()方 法会阻塞当前线程直到任务完成,而使用get(long timeout,TimeUnit unit)方法则会阻塞当前线 程一段时间后立即返回,这时候有可能任务没有执行完。
execute()方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功。
线程池-参数详解

任务队列:

本文详细介绍了JavaThreadPoolExecutor的工作原理,包括线程池的创建、任务处理流程、提交方法的区别(execute()vssubmit()),以及任务队列的不同类型和任务拒绝策略。通过实例展示了如何配置和使用ThreadPoolExecutor进行并发任务处理。
最低0.47元/天 解锁文章
1247

被折叠的 条评论
为什么被折叠?



