`
lanhuidong
  • 浏览: 227426 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于ThreadPoolExecutor的理解

    博客分类:
  • Java
阅读更多

做Java也有4年了,原来对于ThreadPoolExecutor的maximumPoolSize一直存在误解。

public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue)

 假设:corePoolSize=3,maximumPoolSize=5,workQueue的容量为100,有如下调用代码:

 

for (int i = 0; i < 10;i++){
             executorService.execute(new Runnable(){

                 @Override
                 public void run() {
                     System.out.println("1:"+ new Date());
                     try {
                         Thread.sleep(1000*3);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
                 }
             });
         }

 原本以为线程池会创建5个线程来执行任务,结果只有3个线程。开始以为任务数比corePoolSize大时就回创建更多的线程,原来任务超过workQueue的容量之后才会创建更多的线程来执行任务。也就是说如果是无界的队列,那么maximumPoolSize是否设置是无所谓的。

分享到:
评论

相关推荐

    说说你对ThreadPoolExecutor的理解.docx

    ThreadPoolExecutor是Java并发编程中非常重要的一个组件,它位于`java.util.concurrent`包下,用于管理线程资源,实现线程池服务。...理解和熟练使用ThreadPoolExecutor对于编写高性能的多线程Java程序至关重要。

    ThreadPoolExecutor源码解析.pdf

    理解其源码有助于我们更好地控制并发环境下的任务执行,提高系统的效率和稳定性。 1. **线程池状态** 线程池有五种状态: - **RUNNING**:表示线程池处于运行状态,可以接受新任务,同时处理队列中的任务。 - **...

    ThreadPoolExecutor运转机制介绍

    通过对构造函数参数的理解,我们可以精确地控制线程池的行为,从而更好地适应不同的应用需求。此外,通过了解 `newFixedThreadPool` 和 `newCachedThreadPool` 等预定义线程池的特点,我们可以更高效地利用系统资源...

    Java ThreadPoolExecutor的参数深入理解

    Java ThreadPoolExecutor参数深入理解 Java ThreadPoolExecutor是Java并发编程中一个非常重要的组件,它提供了一种灵活的方式来管理线程池。ThreadPoolExecutor的参数深入理解是Java开发人员需要掌握的重要知识点,...

    Android之线程池ThreadPoolExecutor的简介

    所以它的重要性不言而喻,但是它的复杂性也大,理解上可能会有问题,不过作为安卓工程师,了解这个也是必然的。 ThreadPoolExecutor有几个构造函数,最多参数的构造函数最常用,下面会详细介绍各个参数的含义及其几...

    JDK之ThreadPoolExecutor源码分析1

    本文将深入解析ThreadPoolExecutor的execute()方法执行流程,以帮助我们理解线程池的工作原理。 当一个任务被提交到线程池,线程池的执行策略主要分为四步: 1. 首先,线程池会检查当前的核心线程数是否已达到设定...

    线程池ThreadPoolExecutor原理源码分析.md

    本文将围绕 `ThreadPoolExecutor` 的核心方法 `execute()` 进行深入解析,帮助读者更好地理解其内部机制。 #### 二、构造方法 `ThreadPoolExecutor` 提供了一个构造函数,用于初始化线程池: ```java public ...

    深入理解Java线程池:ThreadPoolExecutor _ Idea Buffer1

    1. RUNNING :能接受新提交的任务,并且也能处理阻塞队列中的任务 2. SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处理阻塞队列中已保

    Java线程池与ThreadPoolExecutor.pdf

    Java线程池是Java并发编程中...总结来说,理解并正确使用Java线程池和ThreadPoolExecutor对于优化Java应用程序的并发性能至关重要。通过调整线程池的参数,可以平衡资源利用率和系统响应时间,从而提高整体的系统效率。

    使用线程池ThreadPoolExecutor 抓取论坛帖子列表

    在IT行业中,线程池是多线程编程中一个重要的概念,它可以帮助我们高效地管理和控制并发执行的任务。...通过深入理解线程池的工作机制和源码,我们可以更好地设计和优化我们的并发程序,实现高效的数据抓取。

    java 中ThreadPoolExecutor原理分析

    "java 中ThreadPoolExecutor 原理分析" ThreadPoolExecutor 是 Java 并发编程中的一种高级线程池实现,它提供了一个灵活的线程池管理机制,允许开发者根据需要配置线程池的参数以满足不同的需求。在这篇文章中,...

    深入理解高并发编程-核心技术原理

    通过分析如ThreadPoolExecutor等关键类的源码,读者可以理解线程池的创建和执行机制,以及线程的管理方式。 **线程与线程池**部分介绍了操作系统中的线程概念,指出线程是CPU调度的基本单位,而多线程则能充分利用...

    java面试题高级, 对底层高并发深入理解

    5. **线程池原理**:ThreadPoolExecutor的构造参数,如corePoolSize、maximumPoolSize、keepAliveTime以及workQueue的作用。理解线程池的拒绝策略,如AbortPolicy、CallerRunsPolicy、DiscardPolicy和...

    java线程池对象ThreadPoolExecutor的深入讲解

    Java线程池是一种高效管理线程资源的工具,它的核心组件是`ThreadPoolExecutor`类,它在Java的`java.util.concurrent`包中。...理解其构造参数和工作原理,能够帮助开发者根据实际需求定制适合的线程池,优化系统性能。

    线程处理UI的理解Demo

    在实际开发中,还有其他工具和库可以帮助我们更高效地管理线程,如AsyncTask、IntentService、Runnable、ThreadPoolExecutor等。每个都有其特定的适用场景和优缺点,开发者需要根据项目需求选择合适的方法。 总之,...

    java线程理解小程序

    这就是"java线程理解小程序"的初衷,帮助开发者学习如何在Android环境中正确地管理和使用线程。 首先,我们需要理解Java中的线程创建方式。最基础的是通过实现`Runnable`接口或继承`Thread`类来创建线程。实现`...

    Android应用源码之演化理解 异步加载图片.zip

    "Android应用源码之演化理解 异步加载图片.zip"这个压缩包文件很可能是包含了一套关于Android图片异步加载的源码示例,供开发者参考学习。下面我们将深入探讨这一主题。 1. **异步加载的基本原理**: 在Android中...

    汇集Java后端真实面试题,并用大白话给予答案,并尽可能的做点延伸,理解大于背诵 .zip

    - **线程池**:ExecutorService、ThreadPoolExecutor和ScheduledThreadPoolExecutor的使用及配置。 - **锁机制**:synchronized、Lock(ReentrantLock、ReadWriteLock),以及乐观锁和悲观锁的概念。 5. **设计...

    Java分布式应用学习笔记07线程池应用

    在深入探讨Java分布式应用中线程池的应用之前,我们先来理解一下线程池的基本概念及其在并发编程中的重要性。线程池是Java并发编程的核心技术之一,它通过复用一组预创建的线程来执行任务,从而减少了创建和销毁线程...

Global site tag (gtag.js) - Google Analytics