您当前的位置: 首页 > 

庄小焱

暂无认证

  • 4浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JDK源码——ThreadPoolExecutor类

庄小焱 发布时间:2021-11-27 23:28:59 ,浏览量:4

摘要

在《阿里巴巴java开发手册》(阿里巴巴Java开发手册-2022年最新版本.pdf-Java文档类资源-CSDN下载)中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池的方法,但都有其局限性,不够灵活;另外由于前面几种方法内部也是通过ThreadPoolExecutor方式实现,使用ThreadPoolExecutor有助于大家明确线程池的运行规则,创建符合自己的业务场景需要的线程池,避免资源耗尽的风险。

创建线程的四种方式
  • 继承Thread类创建线程(生产不使用)
  • 实现Runnable接口创建线程(生产不使用)
  • 使用Callable和Future创建线程(生产不使用)
  • 使用线程池例如用Executor框架(生产中不建议使用,推荐使用ThreadPoolExecutor手动创建线程池)
ThreadPoolExecutor源码
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {
        if (corePoolSize < 0 ||
            maximumPoolSize             
关注
打赏
1657692713
查看更多评论
0.0388s