几种常用的线程池

举报
超级蛋蛋 发表于 2021/05/27 22:49:00 2021/05/27
【摘要】 newFixedThreadPool (固定数目线程的线程池)  - 核心线程数和最大线程数大小一样  - 没有所谓的非空闲时间,即keepAliveTime为0  - 阻塞队列为无界队列LinkedBlockingQueue    ```java     public static ExecutorService newFixedThreadPool(int nThreads, Threa...

newFixedThreadPool (固定数目线程的线程池)

  - 核心线程数和最大线程数大小一样

  - 没有所谓的非空闲时间,即keepAliveTime为0

  - 阻塞队列为无界队列LinkedBlockingQueue

    ```java
     public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {
            return new ThreadPoolExecutor(nThreads, nThreads,
                                          0L, TimeUnit.MILLISECONDS,
                                          new LinkedBlockingQueue<Runnable>(),
                                          threadFactory);
        }
    ```

    - 提交任务

    - 如果线程数少于核心线程,创建核心线程执行任务

    - 如果线程数等于核心线程,把任务添加到LinkedBlockingQueue阻塞队列

    - 如果线程执行完任务,去阻塞队列取任务,继续执行。

      

- newCachedThreadPool(可缓存线程的线程池)

- newSingleThreadExecutor(单线程的线程池)

- newScheduledThreadPool(定时及周期执行的线程池)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。