ThreadPoolExecutor有三个参数是用来管理内部池的大小,分别是corePoolSize,maximumPoolSize,workQueue
从源码可以看出,池控制的策略如下:
1. 如果当前池容量小于corePoolSize时,启动新的线程去执行command任务
2. 当前池容量大于corePoolSize,但是小于maximumPoolSize时,将任务加入到workQueue中,直至队列满;这种情况下,任务会由线程池中的空闲线程取出执行
3. 当线程队列workQueue也满了的情况下,若池容量尚未达到maximumPoolSize时,则将处于workQueue的队列头的任务取出,并启动新的线程来执行;此时应用要求执行的command任务既没有放入队列,也没有在线程中执行,而是再次进入这个池控制流程,直至该command任务被处理
下面是JAVA API中对线程队列的一段描述:
- If fewer than corePoolSize threads are running, the Executor always prefers
adding a new thread rather than queuing.
- If corePoolSize or more threads are running, the Executor always prefers
queuing a request rather than adding a new thread.
- If a request cannot be queued, a new thread is created unless this would
exceed maximumPoolSize, in which case, the task will be rejected.
分享到:
相关推荐
死磕ThreadPoolExecutor线程池.pdf!!死磕ThreadPoolExecutor线程池.pdf死磕ThreadPoolExecutor线程池.pdf死磕ThreadPoolExecutor线程池.pdf
ThreadPoolExecutor线程池
主要为大家详细介绍了ThreadPoolExecutor线程池的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了解决python ThreadPoolExecutor 线程池中的异常捕获问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
提供工厂方法来创建不同类型的线程池,这篇文章主要介绍了Java ThreadPoolExecutor 线程池的使用介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来...
下面小编就为大家带来一篇简单谈谈ThreadPoolExecutor线程池之submit方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇ThreadPoolExecutor线程池原理及其execute方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor...
在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了...
线程池的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,那么超出数量的线程排队等候,等其他线程执行完毕再从队列中取出任务来执行。...
java代码 ThreadPoolExecutor线程池并发测试例子如有误欢迎指正
ThreadPoolExecutor的使用和Android常见的4种线程池使用介绍
1.资源简介:PyQt5中使用多线程模块QThread解决了PyQt5界面程序执行比较耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题,采用线程池ThreadPoolExecutor解决了ping多个IP多任务耗时问题。...
从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进程池)两个类。 相比 threading 等模块,该模块通过 submit 返回的是一个 future ...
ThreadPoolExecutor线程池源码
1.ctl (线程池控制状态)是 原子整型 的,这意味这 对它进行的操作具有原子性。 2.如此一来,作为 ctl 组成部分的 runState (线程池生命周期状态)和 workerCount (工作线程数) 也将同时具有原子性。 3....
线程池ThreadPoolExecutor底层原理源码分析
一个关于java 线程池的例子,也适合android