`

ThreadPoolExecutor参数讲解

    博客分类:
  • Java
阅读更多
1. 线程池可以节省创建多个线程带来的开销问题。

2. 线程池的参数如下:
  
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue) {
        this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
             Executors.defaultThreadFactory(), defaultHandler);
    }


    说明:
   线程池按以下行为执行任务
    1)当线程数小于核心线程数时,创建线程。
    2)当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
    3)当线程数大于等于核心线程数,且任务队列已满
       i)若线程数小于最大线程数,创建线程
       ii)若线程数等于最大线程数,抛出异常,拒绝任务


3. 例子
  
   public static void main(String args[]) throws InterruptedException {
		
		ThreadPoolExecutor executor;
		executor = new ThreadPoolExecutor(3, 10, 5, TimeUnit.SECONDS,
				new LinkedBlockingQueue<Runnable>(10));
		
		for(int i=0;i<20;i++){
			Runnable r=new Runnable(){
				@Override
				public void run() {
					System.out.println("thread run...");
					try {
						Thread.sleep(10000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					
				}
				
			};
			executor.execute(r);
		}
	}

   


   结果说明:
  1)如果队列不指定大小,默认大小无限大,这样队列不会满,每次只有三个coreThread来
      跑(大于核心线程数,但队列不满,任务放入队列中);
   2)如果指定队列大小为10,则最大的10个工作线程来跑;
   3)如果指定队列大小为5,则队列满了,后面的线程被reject掉了。
分享到:
评论

相关推荐

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

    `ThreadPoolExecutor`类提供了丰富的功能,其构造方法参数如下: 1. `corePoolSize`: 核心线程数,表示线程池中始终存在的线程数。当提交的任务数量少于核心线程数时,线程池会直接创建新线程执行任务,即使已有...

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

    本文将详细讲解如何使用Java中的`ThreadPoolExecutor`来抓取论坛帖子列表,结合源码分析和实用工具的应用。 首先,我们要了解线程池的基本原理。线程池是由一组预先创建的线程组成的,这些线程可以复用,而不是每次...

    在spring boot中使用java线程池ExecutorService的讲解

    在 Spring Boot 中使用 Java 线程池 ExecutorService 的讲解 Spring Boot 作为一个流行的 Java 框架,提供了许多便捷的功能来帮助开发者快速构建应用程序。其中之一就是使用 Java 线程池 ExecutorService 来管理...

    python爬虫案例讲解分析文档

    本篇文档主要针对Python初学者,讲解如何使用Python进行网页图片的爬取,包括静态网页和动态网页的爬取方法。 首先,我们来看静态网页爬取。在Python中,静态网页的爬取通常依赖于`requests`库来发送HTTP请求获取...

    java基础知识多线程线程池讲解和练习

    通过ThreadPoolExecutor,我们可以自定义线程池的核心线程数、最大线程数、线程空闲时间、任务队列等参数,从而优化线程管理。使用submit()方法可以将任务提交到线程池,线程池会根据策略决定何时执行这些任务。 ...

    java线程池实例详细讲解

    Java线程池的实现主要有`ThreadPoolExecutor`类,它提供了丰富的构造参数来定制线程池的行为: - `corePoolSize`:线程池的基本大小,即当线程池创建后和运行过程中,即使没有任务,也会保持这个数量的线程存活。 -...

    7000字+24张图带你彻底弄懂线程池.md

    说完线程池的核心构造参数的意思,接下来就来画图讲解这些参数在线程池中是如何工作的。 线程池创建的时候,如果不指定拒绝策略就默认是AbortPolicy策略。当然,你也可以自己实现RejectedExecutionHandler接口,...

    java高清关于线程的讲解实例.rar

    Java的Executor框架提供ThreadPoolExecutor和ScheduledThreadPoolExecutor等实现,允许自定义线程池参数,如核心线程数、最大线程数、线程存活时间等。 总结来说,Java线程是实现并发编程的基础,理解和熟练掌握...

    最新java线程入门讲解

    Java提供的ExecutorService和ThreadPoolExecutor可以创建线程池,有效地管理线程生命周期,避免频繁创建和销毁线程带来的开销。线程池可以设置核心线程数、最大线程数、线程存活时间等参数。 七、线程异常处理 每...

    实例代码讲解Python 线程池

    这里,`max_workers`参数设定了线程池的最大线程数,`submit`方法用于提交任务,`as_completed`则用于获取任务完成后的结果。 总的来说,Python线程池通过预先创建一定数量的线程,实现了对线程资源的有效管理和...

    tomcat优化视频

    - Executor配置:了解Executor的概念,如何自定义线程池,以及如何通过ThreadPoolExecutor进行线程管理。 - 线程池参数调整:如corePoolSize、maximumPoolSize、keepAliveTime等参数对性能的影响。 5. **Web应用...

    java多线程详细讲解

    - **ThreadPoolExecutor**:ExecutorService的实现,可配置核心线程数、最大线程数、线程存活时间等参数。 - **Executors**:静态工厂方法,提供多种线程池的创建,如FixedThreadPool、SingleThreadExecutor等。 ...

    中兴内部培训教材

    6. **多线程**:Java内置对多线程的支持,教材会讲解如何创建和管理线程,线程同步机制(synchronized、wait/notify、Lock接口),以及并发工具类如ExecutorService和ThreadPoolExecutor。 7. **网络编程**:Java...

    Java输入输出流以及线程讲解

    ThreadPoolExecutor是核心类,可以自定义线程池参数,如核心线程数、最大线程数、线程空闲时间等。 9. Callable和Future:Callable接口类似于Runnable,但可以返回一个结果。Future接口代表Callable任务的未来结果...

    详细的讲解并发编程,原理,模式,应用

    此外,Java并发编程也涉及到线程池的使用,ThreadPoolExecutor是Java中最常用的线程池实现,它可以控制线程的数量,防止过多线程导致系统资源耗尽。线程池的配置需要根据系统的实际情况来调整,如核心线程数、最大...

    java面试葵花宝典

    3. 线程池:介绍ExecutorService、ThreadPoolExecutor和Future接口,以及如何合理配置线程池参数。 4. volatile与synchronized的区别:分析这两个关键字在并发编程中的作用和使用场景。 四、Java IO与NIO 1. 流的...

    Java核心技术30讲.zip 音频版 纯干货

    本讲可能详细解析了GC的工作原理,包括不同的GC算法如串行、并行、并发和G1等,以及如何通过调整JVM参数进行性能优化。 2. **第23讲 - 类加载机制**:Java的类加载机制是程序运行的基础,涉及类加载器、双亲委派...

    socket 线程池实现

    在`www.pudn.com.txt`和`ThreadPool`这两个文件中,可能包含了更多关于如何实现Socket线程池的具体代码示例和讲解。例如,`www.pudn.com.txt`可能是一个文档,详述了线程池的配置参数选择和优化技巧;而`ThreadPool`...

    Java高并发编程与JVM性能调优实战 视频教程 下载下载因为太大存百度云盘2.zip

    2. **垃圾收集器与内存调优**:讲解不同类型的GC算法(如Serial、Parallel、CMS、G1、ZGC等),以及如何调整内存参数以减少Full GC的发生。 3. **类加载机制**:解释类加载过程(加载、验证、准备、解析、初始化)...

    JAVA面试必会122道题及19道代码题

    3. 分析构造函数的作用,包括默认构造器和带参数的构造器。 4. 讨论final关键字的用法,如final变量、final方法和final类。 5. 讲解this和super关键字的使用场景。 三、集合框架 1. 比较ArrayList、LinkedList、...

Global site tag (gtag.js) - Google Analytics