如何通过ThreadPoolExecutor的方式创建线程池

发布时间:2022-01-04 15:10:37 作者:柒染
来源:亿速云 阅读:103

如何通过ThreadPoolExecutor的方式创建线程池,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

线程池不建议使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。

Executors各个方法的弊端:

  1. newFixedThreadPool 和 newSingleThreadExecutor:
    主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至OOM。(笔者注:阻塞队列均采用LinkedBlockingQueue)

  2. newCachedThreadPool 和 newScheduledThreadPool:
    主要问题是线程数最大数是Integer.MAX_VALUE,可能会创建数量非常多的线程,甚至OOM。

ThreadPoolExecutor函数

Executors提供了四种创建线程池的方法,实际上Executors的底层也是调用了ThreadPoolExecutor。函数定义如下:

public ThreadPoolExecutor(int corePoolSize,  // 线程池的核心线程数                          
int maximumPoolSize, // 线程池的最大线程数                          
long keepAliveTime, // 当线程数大于核心时,多余的空闲线程等待新任务的存活时间。                          
TimeUnit unit, // keepAliveTime的时间单位                          
ThreadFactory threadFactory, // 线程工厂                          
BlockingQueue<Runnable> workQueue,// 用来储存等待执行任务的队列                          
RejectedExecutionHandler handler // 拒绝策略                          )

线程池运行原理:

如何通过ThreadPoolExecutor的方式创建线程池

函数参数补充说明

  1. workQueue有以下七种选择:

  1. handler有以下四种取值:

关于如何通过ThreadPoolExecutor的方式创建线程池问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. python 线程池ThreadPoolExecutor(下
  2. python 线程池ThreadPoolExecutor(上

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

threadpoolexecutor 线程池

上一篇:怎么给SAP WebIDE开发扩展

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》