多线程之线程池的七个参数

简介: 多线程之线程池的七个参数

今天我们来学习一下多线程中的线程池,说道线程池,自然就是要优先解释一下线程池各个入参了。


ThreadPoolExecutor


ThreadPoolExecutor类是线程池中最核心的一个类了,如果我们想弄清ThreadPoolExecutor的入参,当然是要从它的构造函数入手了。

ThreadPoolExecutor类中一共提高了四个构造函数,入参最多的一个构造函数是七个参数,下面我们就来看一下这七个参数具体是什么,分别有怎样的含义。


参数解释


corePoolSize


int类型,线程池的核心线程大小,线程池中会一直保留着一定的线程数量,即便没有程序调用线程,这些线程依然不会被回收。


maximumPoolSize


int类型,线程池最大线程数量,每次程序在线程池中提取线程时,都会先去确认是否有空闲线程,如果没有空闲线程,才会有线程池进行创建一个新的线程。

但是,线程池中的总数量是有限的,这个参数就是来设置线程池中所能存在的最大线程数量。


keepAliveTime


空闲线程存活时间,当程序执行完成,线程也就空闲下来了,这个时候就会在一定的时间内进行回收销毁;这个空闲时间就是由当前参数来设置的。


unit


keepAliveTime的计量单位。


workQueue


新任务被提交后,会先进入到工作队列中,任务调度时再从队列中取出任务。


ThreadFactory


线程工厂,创建一个新线程时使用的工厂,可以用来设定线程名,是否为daemon线程等等。


handler拒绝策略


当工作队列中的任务达到最大限制,并且线程池中的线程数量也达到了最大限制,这时新任务产生时,就需要拒绝策略,JDK中提供了四种策略,分别是CallerRunsPolicy、AbortPolicy、DiscardPoliy、DiscardOldestPolicy等。


相关文章
|
2天前
|
Java
解析Java线程池:参数详解与执行流程
解析Java线程池:参数详解与执行流程
6 1
|
3天前
|
存储 测试技术
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
10 0
【工作实践(多线程)】十个线程任务生成720w测试数据对系统进行性能测试
|
4天前
|
数据采集 Java Unix
10-多线程、多进程和线程池编程(2)
10-多线程、多进程和线程池编程
|
4天前
|
安全 Java 调度
10-多线程、多进程和线程池编程(1)
10-多线程、多进程和线程池编程
|
9天前
|
存储 Linux C语言
c++进阶篇——初窥多线程(二) 基于C语言实现的多线程编写
本文介绍了C++中使用C语言的pthread库实现多线程编程。`pthread_create`用于创建新线程,`pthread_self`返回当前线程ID。示例展示了如何创建线程并打印线程ID,强调了线程同步的重要性,如使用`sleep`防止主线程提前结束导致子线程未执行完。`pthread_exit`用于线程退出,`pthread_join`用来等待并回收子线程,`pthread_detach`则分离线程。文中还提到了线程取消功能,通过`pthread_cancel`实现。这些基本操作是理解和使用C/C++多线程的关键。
|
1天前
|
并行计算 安全 Java
多线程编程中的线程安全问题与解决方案*
多线程编程中的线程安全问题与解决方案*
|
2天前
|
存储 Java
Java线程池参数详解及其示例
Java线程池参数详解及其示例
6 0
|
4天前
|
SQL 安全 Java
JUC多线程-线程池-Thredalocal-CAS-AQS-死锁
JUC多线程-线程池-Thredalocal-CAS-AQS-死锁
|
5天前
|
Java
java线程之线程池
java线程之线程池
9 0
|
6天前
|
API C++
c++进阶篇——初窥多线程(三)cpp中的线程类
C++11引入了`std::thread`,提供对并发编程的支持,简化多线程创建并增强可移植性。`std::thread`的构造函数包括默认构造、移动构造及模板构造(支持函数、lambda和对象)。`thread::get_id()`获取线程ID,`join()`确保线程执行完成,`detach()`使线程独立,`joinable()`检查线程状态,`operator=`仅支持移动赋值。`thread::hardware_concurrency()`返回CPU核心数,可用于高效线程分配。