线程池的组成及种类

article/2025/9/14 14:56:41

文章目录

    • 一、 线程池的组成结构
    • 二、常见的线程池种类
    • 三、线程池的工作流程
    • 四、线程池的好处
    • 五、小结

我们知道一个进程可以把任务分成多个部分交给线程执行,多线程技术减少了CPU闲置时间,增加了程序并发性。
假设创建线程的时间为t1,执行任务的时间为t2,销毁线程的时间为t3。如果(t1+t2)>t3那么线程的创建和销毁就消耗了太多的资源,因此引进了线程池的概念。

一、 线程池的组成结构

一个线程池包括四个基本部分
1.线程管理池(ThreadPool):用于创建并管理线程池,有创建,销毁,添加新任务;
2.工作线程(PoolWorker):线程池中的线程在没有任务的时候处于等待状态,可以循
环的执行任务;
3.任务接口(Task):每个任务必须实现接口,用来提供工作线程调度任务的执行,规定了任务的入口以及执行结束的收尾工作和任务的执行状态等;
4.任务队列:用于存放没有处理的任务,提供一种缓存机制。

二、常见的线程池种类

1.CachedThreadPool(可缓存的线程池)
2.SecudleThreadPool(周期性执行任务的线程池)
3.SingleThreadPool(单线程线程池)
4.FixedThreadPool(定常的线程池)

在这里插入图片描述

三、线程池的工作流程

在这里插入图片描述
拿存在核心线程的线程池为例,这样其他线程池也很容易了解了!
在这里插入图片描述
在这里我们要注意:核心线程池满了之后是判断任务队列是否满,而不是创建非核心线程,在线程池中只有核心线程是永久存在的,其他线程都有自己的生命周期,时间一到线程就会被销毁。
当创建的线程数超过了最大容量,那么操作系统就会调用handle处理机制:
1.AbortPolicy:不执行新任务,直接抛出异常
2.DisCardPolicy:不执行新任务,也不抛异常
3.DisCard OldSetPolicy,新任务替换任务队列的第一个任务
4.CallerRunsPolicy:直接调用execute执行当前任务。

四、线程池的好处

线程池可以限制系统中执行线程的数量。 针对一些需要处理的短小而数量巨多的线程
根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。

五、小结

Java中的线程池的顶级接口是Executor,我们真正使用的是ExecutorService,他的默认实现是ThreadPoolExecutor;
创建线程池的方式:

ExecutorService pool = Executors.newCachedThreadPool();

什么是Executor框架?
Executor 框架是一个根据一组执行策略调用、调度、执行和控制的异步任务的框架。利用它可以方便地创建线程池。


http://chatgpt.dhexx.cn/article/807jfbXw.shtml

相关文章

Java 中几种常用的线程池

概述: 在java内置API中操作线程所用到的类为Thread。创建线程一般有两种方式, 继承Thread方式实现Runnable方式,并以runnable作为target创建Thread 在Android中的耗时任务一般都需要另开线程来执行,常常需要用线程池来管理这些…

面试官:线程池有哪几种创建方式,能详细的说下么?

根据摩尔定律所说:集成电路上可容纳的晶体管数量每 18 个月翻一番,因此 CPU 上的晶体管数量会越来越多。 但随着时间的推移,集成电路上可容纳的晶体管数量已趋向饱和,摩尔定律也渐渐失效,因此多核 CPU 逐渐变为主流&a…

JAVA常用的几种线程池

1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 …

java线程池详解及五种线程池方法详解

基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThreads),但是便捷不仅隐藏了复杂性,也为我们埋下了潜在的隐患(OOM&#x…

Java常见的线程池有哪些?

1、什么是线程池 java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务…

线程池的使用(7种创建方法)

目录 1. 固定数量的线程池 a. 线程池返回结果 b. ⾃定义线程池名称或优先级 2. 带缓存的线程池 3. 执⾏定时任务 a. 延迟执⾏(⼀次) b. 固定频率执⾏ c. scheduleAtFixedRate VS scheduleWithFixedDelay 4. 定时任务单线程 5. 单线程线程池 6. 根据当前CPU⽣成线程池 7. Threa…

线程池原理常用四大线程池及七大参数

目录 前言常用的四种线程池newCachedThreadPool——可缓存线程池newFixedThreadPool————指定线程数量newSingleThreadExecutor————单线程的ExecutornewScheduleThreadPool——定时线程池 线程池七大参数corePoolSize——核心线程最大数maximumPoolSize——线程池最大线…

创建线程池的七种方式

在 Java 语言中,并发编程往往都是通过床架线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景。总结来说线程池的创建可以分为两大类: 通过 Executors 创建 通过 ThreadPoolExecutor 创建…

Java中常用的四种线程池

在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,在Executors类中,为我们提供了常用线程池的创建方法。 ​ 接下来我们就来了解常用的四种: newFixedThreadPool 首先,看一下这种线程池的…

5种常用的线程池

目录 0 概述1 newCachedThreadPool(可缓存的线程池)2 newFixedThreadPool(固定大小的线程池)3 newScheduledThreadPool(可做任务调度的线程池)4 newSingleThreadPool(单个线程的线程池&#xff…

java中的线程池有哪些,分别有什么作用?

阅读完本篇文章会知道如下三点: 1.进程-线程简单介绍 2.java的线程池是什么,有哪些类型,作用分别是什么 3.使用线程池的优点 1.进程-线程的简单介绍 进程 什么是进程呢? 进程是计算机中的程序关于某数据集合的一次运行活动&…

线程池有几种创建方式?

总体来说线程池的创建可以分为以下两类: 通过 ThreadPoolExecutor 手动创建线程池通过 Executors 执行器自动创建线程池。 而以上两类创建线程池的方式,又有 7 种具体实现方法,这 7 种实现方法分别是: Executors.newFixedThre…

创建线程池有哪几种方式

通常开发者都是利用Executors提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于不同的 Executors目前提供了5种不同的线程池创建配置: 1、newCachedThreadPool(),它是用来处理大量短时间工作…

Java常见的5种线程池

在开发过程中我们常常需要使用到多线程来提高我们代码处理某些任务的效率,最基本的两种创建多线程的方式分别是继承Thread类和实现Runnable接口。但是创建线程和销毁线程的系统开销比较大,而且过多的线程会占用过多的内存等资源。在《阿里巴巴Java开发手…

4种常用线程池介绍

一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执…

面试突击:线程池有几种创建方式?推荐使用哪种?

在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景,总体来说线程池的创建可以分为以下两类: 通过 ThreadPoolExecutor 手动创建线程池。…

线程池的分类(5种)

Java面试高频提问点 问题一:线程池的创建方式 文章目录 Java面试高频提问点前言一、线程池的分类1.newCachedThreadPool2.newFixedThreadPool3.newSingleThreadExecutor4.newScheduleThreadPool5.newSingleThreadScheduledExecutor 总结 前言 近期因为上海疫情原因…

docker搭建pxc

1、设置阿里云加速器 先搭建一个加速器为后面下载镜像做准备 2、下载pxc镜像 docker pull percona/percona-xtradb-cluster:5.7.21 #下载镜像 docker tag percona/percona-xtradb-cluster:5.7.21 pxc #改镜像名 docker rmi percona/percona…

mysql bootstrap pxc_MYSQL PXC

下载ssl101的安装包上传服务器对应安装目录/usr/local 目录。 [rootlocalhost ~]# yum -y install openssl openssl-devel perl-Time-HiRes perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch [rootpxc2 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm warning: libev-4.15…

mysql pxc集群介绍_PXC集群的概述及搭建

PXC集群的概述及搭建 PXC集群的简介 Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,便于故障恢复,后面会讨论两节点的情况),每个节点都是基于常规的 MySQL/Percona Server&…