在讲过线程池的一些好处后,接下来我们要对线程池进行创建,在开始之前需要学习一些创建时会用到的参数,这里以ThreadPoolExecutor的方法为例。对于七中的参数属性概念和用法做一个简单的介绍,在全部掌握这些参数的用法后,进一步在实例中展示ThreadPoolExecutor创建线程池的方法。
1.创建参数
线程池可以自动创建也可以手动创建,手动创建体现在可以灵活设置线程池的各个参数。
corePoolSize:线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。
maximumPoolSize:线程数,不管你提交多少任务,线程池里最多工作线程数就是maximumPoolSize。
keepAliveTime:线程的存活时间。当线程池里的线程数大于corePoolSize时,如果等了keepAliveTime时长还没有任务可执行,则线程退出。
unit:这个用来指定keepAliveTime的单位,比如秒:TimeUnit.SECONDS。
七种静态属性
TimeUnit.DAYS;//天 TimeUnit.HOURS;//小时 TimeUnit.MINUTES;//分钟 TimeUnit.SECONDS;//秒 TimeUnit.MILLISECONDS;//毫秒 TimeUnit.MICROSECONDS;//微妙 TimeUnit.NANOSECONDS;//纳秒
workQueue:一个阻塞队列,提交的任务将会被放到这个队列里:
ArrayBlockingQueue;
LinkedBlockingQueue;
SynchronousQueue;
threadFactory:线程工厂,用来创建线程,主要是为了给线程起名字,默认工厂的线程名字:pool-1-thread-3。
handler:拒绝策略,当线程池里线程被耗尽,且队列也满了的时候会调用。
2.创建实例
publicThreadPoolExecutor(intcorePoolSize, intmaximumPoolSize, longkeepAliveTime, TimeUnitunit, BlockingQueue<Runnable>workQueue){ this(corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue, Executors.defaultThreadFactory(),defaultHandler); }
原文来自:https://www.py.cn
暂无评论内容