在threadpool的构造参数中,如
ThreadPoolExecutor executor = new ThreadPoolExecutor
(corePoolSize,maximumPoolSize,keepAliveTime, TimeUnit.SECONDS,workQueue);
其中maximumPoolSize我一直认为如果等待执行的线程数目大于corePoolSize就会创建新的线程。后来实际工作中发现线程数目达到corePoolSize就不会创建新线程了。后来多方分析原因,多方阅读其它大侠的文章才发现,这么多年来我错了!!!
其实应该这么理解,如果线程数目小于corePoolSize则直接创建新线程。如果线程数目大于corePoolSize,
则是先尝试放入workQueue,如果不能够放入workQueue且在执行的线程数目小于
maximumPoolSize则创建新的线程。如果大于maximumPoolSize则抛出java.util.concurrent.RejectedExecutionException。
另外还可以通过setMaximumPoolSize来动态改变线程池的大小。如果当前执行的线程数目大于maximumPoolSize则执行清理空闲线程的工作。
通过setCorePoolSize来动态增加在执行的线程的数目。如果在执行的数目小于coreSize则新的线程会被创建。如果大于,则等待线程空闲时则会减少线程数目。
分享到:
相关推荐
ThreadPoolExecutor是Java并发编程中非常重要的一个组件,它位于`java.util.concurrent`包下,用于管理线程资源,实现线程池服务。...理解和熟练使用ThreadPoolExecutor对于编写高性能的多线程Java程序至关重要。
理解其源码有助于我们更好地控制并发环境下的任务执行,提高系统的效率和稳定性。 1. **线程池状态** 线程池有五种状态: - **RUNNING**:表示线程池处于运行状态,可以接受新任务,同时处理队列中的任务。 - **...
Java ThreadPoolExecutor参数深入理解 Java ThreadPoolExecutor是Java并发编程中一个非常重要的组件,它提供了一种灵活的方式来管理线程池。ThreadPoolExecutor的参数深入理解是Java开发人员需要掌握的重要知识点,...
通过对构造函数参数的理解,我们可以精确地控制线程池的行为,从而更好地适应不同的应用需求。此外,通过了解 `newFixedThreadPool` 和 `newCachedThreadPool` 等预定义线程池的特点,我们可以更高效地利用系统资源...
所以它的重要性不言而喻,但是它的复杂性也大,理解上可能会有问题,不过作为安卓工程师,了解这个也是必然的。 ThreadPoolExecutor有几个构造函数,最多参数的构造函数最常用,下面会详细介绍各个参数的含义及其几...
本文将深入解析ThreadPoolExecutor的execute()方法执行流程,以帮助我们理解线程池的工作原理。 当一个任务被提交到线程池,线程池的执行策略主要分为四步: 1. 首先,线程池会检查当前的核心线程数是否已达到设定...
本文将围绕 `ThreadPoolExecutor` 的核心方法 `execute()` 进行深入解析,帮助读者更好地理解其内部机制。 #### 二、构造方法 `ThreadPoolExecutor` 提供了一个构造函数,用于初始化线程池: ```java public ...
1. RUNNING :能接受新提交的任务,并且也能处理阻塞队列中的任务 2. SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保
Java线程池是Java并发编程中...总结来说,理解并正确使用Java线程池和ThreadPoolExecutor对于优化Java应用程序的并发性能至关重要。通过调整线程池的参数,可以平衡资源利用率和系统响应时间,从而提高整体的系统效率。
在IT行业中,线程池是多线程编程中一个重要的概念,它可以帮助我们高效地管理和控制并发执行的任务。...通过深入理解线程池的工作机制和源码,我们可以更好地设计和优化我们的并发程序,实现高效的数据抓取。
"java 中ThreadPoolExecutor 原理分析" ThreadPoolExecutor 是 Java 并发编程中的一种高级线程池实现,它提供了一个灵活的线程池管理机制,允许开发者根据需要配置线程池的参数以满足不同的需求。在这篇文章中,...
通过分析如ThreadPoolExecutor等关键类的源码,读者可以理解线程池的创建和执行机制,以及线程的管理方式。 **线程与线程池**部分介绍了操作系统中的线程概念,指出线程是CPU调度的基本单位,而多线程则能充分利用...
5. **线程池原理**:ThreadPoolExecutor的构造参数,如corePoolSize、maximumPoolSize、keepAliveTime以及workQueue的作用。理解线程池的拒绝策略,如AbortPolicy、CallerRunsPolicy、DiscardPolicy和...
Java线程池是一种高效管理线程资源的工具,它的核心组件是`ThreadPoolExecutor`类,它在Java的`java.util.concurrent`包中。...理解其构造参数和工作原理,能够帮助开发者根据实际需求定制适合的线程池,优化系统性能。
20. **Android Jetpack Compose**:了解最新的UI开发框架Jetpack Compose,理解声明式UI编程的概念。 以上知识点是Android高级开发者必备的技术栈,对于社招面试至关重要。熟悉并能够灵活运用这些知识点,将大大...
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗...
15. 线程池:了解ExecutorService和ThreadPoolExecutor,理解线程池的配置与优化。 六、IO与NIO 16. 文件操作:熟悉File类的使用,理解输入输出流的分类。 17. 字符流与字节流:理解两者的区别,掌握Reader和Writer...
- 线程池:理解ExecutorService、ThreadPoolExecutor、ScheduledExecutorService的用法。 - 死锁与活锁:了解死锁的概念及避免方法。 5. **IO流** - 字节流与字符流:掌握InputStream、OutputStream、Reader、...
为了在激烈的求职竞争中脱颖而出,理解和掌握最新的Java面试题是非常重要的。这份"最新java面试题汇集"提供了全面的Java面试和笔试题目,旨在帮助寻找工作的程序员提升技能,增加成功获得职位的机会。 一、基础篇 1...