博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Executors.newFixedThreadPool何时创建新线程
阅读量:6954 次
发布时间:2019-06-27

本文共 657 字,大约阅读时间需要 2 分钟。

hot3.png

    Executors.newFixedThreadPool 本意是创建一个固定大小的线程池,但这个线程池是什么执行的呢?

1、当一个任务提交执行后,就会先判断是否线程池的数量已经达到上限,如果没有则创建新的线程来执行任务,即使原来创建过的线程是空闲的也不会使用。看源码:

    private boolean addIfUnderCorePoolSize(Runnable firstTask) {        Thread t = null;        final ReentrantLock mainLock = this.mainLock;        mainLock.lock();        try {            if (poolSize < corePoolSize && runState == RUNNING)                t = addThread(firstTask);        } finally {            mainLock.unlock();        }        if (t == null)            return false;        t.start();        return true;    }

即只要线程池没有满就会创建新的线程,并不会因为线程池的其他线程是空闲的就不创建新线程

转载于:https://my.oschina.net/u/1159254/blog/523403

你可能感兴趣的文章
重读<软件性能测试>摘要
查看>>
毕业季
查看>>
测评报告:热门项目管理工具哪家强?
查看>>
java.sql.SQLSyntaxErrorException: ORA-00904: " ": invalid identifier错误
查看>>
vue2.0做移动端开发用到的相关插件和经验总结
查看>>
Linux查看文件夹大小
查看>>
系统集成项目管理工程师整理资料
查看>>
writexml方法:
查看>>
AutoLayout经常用到的一些布局(含StackView)
查看>>
HLG 1541 集合划分【01背包】
查看>>
Java IO 详解
查看>>
php生成随机密码的几种方法
查看>>
c#编程模仿的1stopt界面
查看>>
Castle ActiveRecord的一对多问题
查看>>
移山亦可有道 ——读《移山之道》
查看>>
python使用windows注册表
查看>>
MySQL5.6.13安装步骤(Windows7 64位)札记 1
查看>>
使用 nginx + thin 的配置启动 rails server
查看>>
服务器用户登录记录
查看>>
Centos6.0使用第三方YUM源(EPEL,RPMForge,RPMFusion)
查看>>