多进程使用(二)
作者:互联网
ThreadPoolExecutor方法
线程池核心参数
1、corePoolSize 要保留在池中的线程数,也就是线程池核心池的大小;
2、maximumPoolSize 最大线程数;
3、keepAliveTime 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间;
4、unit keepAliveTime 参数的时间单位;
5、workQueue 用来储存等待执行任务的队列;
6、threadFactory 线程工厂;
7、handler 默认的拒绝执行处理程序。
线程状态
拒绝策略
参数含义
1、corePoolSize:指定了线程池中的线程数量;
2、maximumPoolSize:指定了线程池中的最大线程数量;
3、keepAliveTime:当前线程池数量超过 corePoolSize 时,多余的空闲线程的存活时间,即多次时间内会被销毁;
4、unit:keepAliveTime 的单位;
5、workQueue:任务队列,被提交但尚未被执行的任务;
6、threadFactory:线程工厂,用于创建线程,一般用默认的即可;
7、handler:拒绝策略,当任务太多来不及处理,如何拒绝任务。
拒绝策略
JDK 内置的拒绝策略如下:
1、AbortPolicy : 直接抛出异常,阻止系统正常运行。
2、CallerRunsPolicy : 只要线程池未关闭,该策略直接在调用者线程中,运行当前被丢弃的任务。显然这样做不会真的丢弃任务,但是,任务提交线程的性能极有可能会急剧下降。
3、DiscardOldestPolicy : 丢弃最老的一个请求,也就是即将被执行的一个任务,并尝试再次提交当前任务。
4、DiscardPolicy : 该策略默默地丢弃无法处理的任务,不予任何处理。如果允许任务丢失,这是最好的一种方案。
5、以上内置拒绝策略均实现了 RejectedExecutionHandler 接口,若以上策略仍无法满足实际需要,完全可以自己扩展 RejectedExecutionHandler 接口。
标签:策略,丢弃,拒绝,keepAliveTime,任务,线程,使用,进程 来源: https://www.cnblogs.com/yyml181231/p/13019774.html