自学内容网 自学内容网

【Java-线程池】

目录

什么是线程池:

线程池七大参数:

参数详细介绍:

1.核心线程数:

2.最大线程数:

3.线程存活时间:

4.时间单位:

5. 阻塞工作队列:

6.线程工厂:

7.拒绝策略:

线程池的执行流程:

线程池的常用方法:

线程池分类:

线程池的状态:

​编辑


什么是线程池:

        简单来说,线程池就是帮助我们创建并管理多个线程。

        线程池(Thread Pool)是一种基于池化技术的多线程处理形式,用于管理线程的创建和生命周期,以及提供一个用于并行执行任务的线程队列。线程池的主要目的是减少在创建和销毁线程时所花费的开销和资源,提高程序性能,同时也提供了对并发执行任务的更好管理,例如控制线程数量。

线程池七大参数:

以ThreadPoolExecutor举例,线程池七大参数:1.核心线程数 2.最大线程数 3.线程存活时间 4.时间单位 5. 阻塞工作队列 6.线程工厂 7.拒绝策略。

参数详细介绍:

1.核心线程数:

        线程池中能维护的最小线程数量,即使它们处于空闲状态也不会被回收,这样保证当新任务到来时能够快速进行响应。

2.最大线程数:

        线程池允许创建的最大线程数(包含核心线程)。

3.线程存活时间:

        非核心线程的存活时间(核心线程不会回收),当非核心线程的空闲时间大于存活时间就会被回收。

4.时间单位:

        线程存活时间的时间单位(eg.TimeUnit.SECONDS 秒)

5. 阻塞工作队列:

        用于存储待执行的任务。

6.线程工厂:

        用于创建线程,以及自定义线程名称,需要实现ThreadFactory接口。

7.拒绝策略:

        当线程池线程内部的线程耗尽,并且工作队列达到已满时,新提交的任务将使用拒绝策略进行处理。

线程池的执行流程:

线程池的常用方法:

void execute(Runnable command):提交线程任务

Future<T> submit(Callable<T> task):提交线程任务,可以获取线程执行结果

void shutdown():将线程池中的线程任务执行完毕后,关闭线程池

List<Runnable> shutdownNow():立刻关闭线程池,并返回未完成的线程任务

线程池分类:

        通过实现不同方法对象分类

FixedThreadPool:固定大小线程池,线程数量固定,不会自动扩容或缩容。

CachedThreadPool:缓存线程池,线程数量不固定,根据需要自动扩容或缩容。适用于执行大量短时间任务的场景。

SingleThreadPool:单线程线程池,只有一个线程在工作,保证任务按顺序执行。

ScheduledThreadPool:定时任务线程池,用于执行定时任务和周期性任务。

线程池的状态:

RUNNING

运行状态:接受新任务,持续处理任务队列里的任务

SHUTDOWN

不再接受新任务,要处理任务队列里的任务

STOP

不再接受新任务,也不再处理任务队列里的任务,中断正在执行的任务

TIDYING

表示线程池正在停止运行,终止所有任务,销毁所有工作线程,当线程池执行 terminated()方法时,线程池进入TIDYING状态

TERMINATED

表示线程池已停止运行,所有的工作线程已经被销毁,所有的任务已经被清空或者执行完毕,terminated() 方法执行完毕之后线程池进入此状态


原文地址:https://blog.csdn.net/2301_78794952/article/details/142355025

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!