在说明线程池的一些优点之后,创建线程池。 在开始之前,必须学习创建时使用的参数。 这里以ThreadPoolExecutor的方法为例。 简要介绍了七个参数属性的概念和用法,并通过实例演示了ThreadPoolExecutor如何创建线程池。
1 .创建参数
线程池可以自动创建,也可以手动创建。 将反映在每个可以灵活设置线程池的参数中。
corePoolSize :线程池中的核心线程数。 简言之,即使线程池中没有任何任务,corePoolSize个线程也在等待任务。
maximumPoolSize:的最大线程数。 无论提交多少个任务,线程池中的最大工作线程数都是maximumPoolSize。
keepAliveTime:线程的生存时间。 如果线程池中的线程数大于corePoolSize,则在等待keepAliveTime时无法执行任务,线程将终止。
unit :用于指定keepAliveTime的此单位,如秒:TimeUnit.SECONDS。
7个静态属性TimeUnit.DAYS; //日
TimeUnit.HOURS; //小时
TimeUnit.MINUTES; //分钟
TimeUnit.SECONDS; 每秒
TimeUnit.MILLISECONDS; //毫秒
TimeUnit.MICROSECONDS; //微妙
TimeUnit.NANOSECONDS; //纳秒
工作队列:已提交任务所在的块队列:
ArrayBlockingQueue;
LinkedBlockingQueue;
同步队列;
threadFactory :创建线程的线程工厂。 主要用于命名线程,默认工厂线程名称: pool-1-thread-3。
处理程序:拒绝策略。 当线程池中的线程已耗尽且队列也已满时调用。
2 .创建实例publicthreadpoolexecutor (intcorepoolsize,
int maximumPoolSize,
长期保持活动时间,
时间单元单元,
阻塞队列工作队列) {
this(corepoolsize,maximumPoolSize,keepAliveTime,unit,工作队列,
Executors.defaultThreadFactory (,defaultHandler );
}
以上是ThreadPoolExecutor在java中创建线程池的方式。 需要掌握基本参数的使用方法。 掌握后,可以尝试创建线程的代码部分,以验证线程的学习结果。