Java线程池参数详解
1:前言
在使用线程池时,为了获取最佳的性能,常常需要手动指定线程池的参数,ThreadPoolExecutor是最常用的线程池执行器,它有四个构造方法,参数最多的构造方法有7个参数,下面将详细介绍这7个参数的含义及作用。
2:ThreadPoolExecutor的构造方法源码
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {if (corePoolSize < 0 ||maximumPoolSize <= 0 ||maximumPoolSize < corePoolSize ||keepAliveTime < 0)throw new IllegalArgumentException();if (workQueue == null || threadFactory == null || handler == null)throw new NullPointerException();this.acc = System.getSecurityManager() == null ?null :AccessController.getContext();this.corePoolSize = corePoolSize;this.maximumPoolSize = maximumPoolSize;this.workQueue = workQueue;this.keepAliveTime = unit.toNanos(keepAliveTime);this.threadFactory = threadFactory;this.handler = handler;}
3:参数详解
核心线程数:corePoolSize
线程池中活跃的线程数,即使它们是空闲的,除非设置了allowCoreThreadTimeOut为true。allowCoreThreadTimeOut的值是控制核心线程数是否在没有任务时是否停止活跃的线程,当它的值为true时,在线程池没有任务时,所有的工作线程都会停止。
最大线程数:maximumPoolSize
线程池所允许存在的最大线程数。
多余线程存活时长:keepAliveTime
线程池中除核心线程数之外的线程(多余线程)的最大存活时间,如果在这个时间范围内,多余线程没有任务需要执行,则多余线程就会停止。(注意:多余线程数 = 最大线程数 - 核心线程数)
时间单位:unit
多余线程存活时间的单位,可以是分钟、秒、毫秒等。
任务队列:workQueue
线程池的任务队列,使用线程池执行任务时,任务会先提交到这个队列中,然后工作线程取出任务进行执行,当这个队列满了,线程池就会执行拒绝策略。
线程工厂:threadFactory
创建线程池的工厂,线程池将使用这个工厂来创建线程池,自定义线程工厂需要实现ThreadFactory接口。
拒绝执行处理器(也称拒绝策略):handler
当线程池无空闲线程,并且任务队列已满,此时将线程池将使用这个处理器来处理新提交的任务。
Java线程池参数详解相关推荐
- Java线程池ThreadPool详解
Java线程池ThreadPool详解 1. 线程池概述 1.1 线程池简介 1.2 线程池特点 1.3 线程池解决问题 2. 线程池原理分析 2.1 线程池总体设计 2.6 线程池流转状态 2.2 ...
- java线程池使用详解ThreadPoolExecutor使用示例
一 使用线程池的好处 二 Executor 框架 2.1 简介 2.2 Executor 框架结构(主要由三大部分组成) 1) 任务(Runnable /Callable) 2) 任务的执行(Exec ...
- Java线程池(Executor)详解和用法
背景 面试的时候经常会被三连问.用过吗?如何用的?场景是什么?所以有必要好好的研究下线程池迫在眉睫. 1.讲解之前先了解下 retry: 因为源码中有这个retry标记 先看一个简单的例子 /*** ...
- 线程池参数详解_java中常见的六种线程池详解
之前我们介绍了线程池的四种拒绝策略,了解了线程池参数的含义,那么今天我们来聊聊Java 中常见的几种线程池,以及在jdk7 加入的 ForkJoin 新型线程池 首先我们列出Java 中的六种线程池如 ...
- java线程池使用详解
http://automaticthoughts.iteye.com/blog/1612388 一 简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使 ...
- 线程池参数详解及其工作原理
线程池的作用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果提交的任务超过了线程能执行的最大数量,超出的数量的任务会被提交到一个阻塞队列排 ...
- Java线程池参数、执行流程及线程数配置建议
1. 线程池参数详解 corePoolSize:线程池中常驻核心线程数: maximumPoolSize:线程池能够容纳同时执行的最大线程数: keepAliveTime:多余的空闲线程存活时间: u ...
- 线程池源代码详解,参数详解
线程池源代码详解,参数详解 ThreadPoolExecutor 构造函数源代码 public ThreadPoolExecutor(int corePoolSize, int maximumPool ...
- async spring 默认线程池_Spring boot注解@Async线程池实例详解
这篇文章主要介绍了Spring boot注解@Async线程池实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从Spring3开始提供了@A ...
最新文章
- Nodejs+Express学习二(Mongoose基础了解)
- Javascript模式阅读笔记 · 简介
- python教程:模块的作用与说明
- 倒腾了一天的笔记-centos 部署jar包
- Kinect+OpenNI+OpenCV使用
- 向ASP.NET Core迁移
- C51存储器类型与51单片机的物理区域
- java jmstemplate_Java JmsTemplate.setReceiveTimeout方法代码示例
- gridview中手工排序
- Teamviewer远程连接提示疑似商业用途处理替代软件
- 通过maven安装spire.pdf
- android keytool工具,keytool工具的使用
- PowerBuilder反编译,PowerBuilder 反编译
- 微弱信号检测matlab代码,微弱信号检测实验报告.doc
- 游戏素材网站推荐!!!
- PIPIOJ1451: PIPI的数学题VIII
- 解决:outlook邮件内容过宽,打印不全
- 【json】json文件中文乱码
- Archlinux和Windows双系统安装
- GitHub重磅官宣!我总结了所有面试题,快来收藏!