Java常见的5种线程池

article/2025/9/14 17:09:01

        在开发过程中我们常常需要使用到多线程来提高我们代码处理某些任务的效率,最基本的两种创建多线程的方式分别是继承Thread类和实现Runnable接口。但是创建线程和销毁线程的系统开销比较大,而且过多的线程会占用过多的内存等资源。在《阿里巴巴Java开发手册》中也提示我们“线程资源必须通过线程池提供,不允许在应用中自行显式创建线程”。所以我们引入了线程池。

一、常见的5种线程池分别是:

    1、FixedThreadPool,它的核心线程数和最大线程数是一样的,可以把它看成是固定线程数的线程池;

    2、CachedThreadPool,可以把它叫做可缓存线程池,它的特点是线程数可以持续增加(理论最大可达Integer.MAX_VALUE=2^31-1);

    3、ScheduledThreadPool,它支持定时或周期性的执行任务,有3个方法可以灵活的执行频率配置参数;

    4、SingleThreadExecutor,它会使用唯一的线程去执行任务,适用于所有任务都需要按照被提交的顺序依次执行的场景;

    5、SingleThreadScheduledExecutor,它和SingleThreadExecutor有些类似,它的核心线程数是1,但是最大线程数是Integer.MAX_VALUE。

二、创建方法:

     使用 Executors 去创建,这个些线程池对应的方法都是静态的,例:

     Executors.newFixedThreadPool(10);

     

三、参数对比:

参数

FixedThreadPool

CachedThreadPool

ScheduledThreadPool

SingleThreadExecutor

SingleThreadScheduledExecutor

corePoolSize

构造函数传入

0

构造函数传入

1

1

maxPoolSize

同corePoolSize

Integer.MAX_VALUE

Integer.MAX_VALUE

1

Integer.MAX_VALUE

keepAliveTime

0

60s

0

0

0

workQueue

LinkedBlockingQueue

SynchronousQueue

DelayedWorkQueue

LinkedBlockingQueue

DelayedWorkQueue

 

 

 

       当我们去看这些线程池的实现的时候,会发现它们最终都创建ThreadPoolExecutor对象,也就是说上面的这5个线程池只是对ThreadPoolExecutor做了一层封装而已,让他们适用一些特定的场景。在《阿里巴巴Java开发手册》中提示我们“线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险”。所以我们在实际创建线程池的时候一般都是通过ThreadPoolExecutor这种方式。


http://chatgpt.dhexx.cn/article/XVx3Y9Zm.shtml

相关文章

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&…

pxc 数据库

一 首先 拉取pxc镜像 docker pull percona/percona-xtradb-cluster 重命名pxc名字 docker tag percona/percona-xtradb-cluster pxc 删除之前的 docker rmi percona/percona-xtradb-cluster 二 创建内部网络 docker network create --subnet172.18.0.0/24 net1 查看net1网…

MySQL_PXC集群_综合应用

MySQL_PXC集群_综合应用 简述部署PXC集群和主从区别综合应用部署PXC集群部署主从复制集群MasterSlave 部署MyCat节点一节点二 部署HAProxy 简述 Percona XtraDB Cluster(简称PXC)是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Ser…

mysql pxc 使用_PXC使用介绍

用户发起Commit,在收到Ok之前 集群每次发起一个动作,都会有一个唯一的编号 PXC独有的Global Trx Id 动作发起者: commit_cb其它节点多了一个动作: apply_cb 上面的这些动作,是通过那个端号交互的?4567 4568端口 IST 只…

docker搭建pxc集群

因为公司需要搭建mysql集群,本来使用原生的mysql镜像搭建了一个简单的主从集群,后来发现使用pxc集群更加方便快捷,而且数据同步性能更强,所以尝试搭建一个pxc集群。 1.pxc介绍 Percona XtraDB Cluster(PXC集群&#…

mysql gtid 还是pxc_PXC中的GTIDs

基本环境:PXC 5.7.19 RowGtid,3节点 一、Galera GTID vs MySQL GTID 1.1、Galera GTID vs MySQL GTID Both kinds of GTIDs are using the same format: . For Galera, is generated when the cluster is bootstrapped. This is shared by all nodes. Fo…

mysql pxc搭建_MySQL(PXC)集群搭建

前言 我这里使用三台CentOS Linux release 7.8.2003的虚拟机来作演示 [rootn1 ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) 安装前准备 请确保服务器没有安装MySQL,如果已经安装了请先卸载(后面会起冲突) 删除 MariaDB 这里我的服务器版本为…

docker pxc mysql_docker安装pxc集群的详细教程

前言 现在mysql自建集群方案有多种,keepalived、MHA、PXC、MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有同步延时问题&#xf…

mysql pxc gcache_MySQL高可用之PXC

PXC简介 PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更…

PXC集群

1.pxc集群 1.1 软件介绍 • Percona XtraDB Cluster(简称PXC) - 是基于Galera的mysql高可用集群解决方案 - Galera Cluster是Codership公司开发的一套免费开源的高可用方案 - PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步,多主复制…

mysql bootstrap pxc_Mysql高可用之PXC

一。PXC简介 Percona XtraDB Cluster简称PXC。是一套开源mysql高可用解决方案(XtraDb是mysql被oracle收购之前 开源一个分支 其他分支还有mariadb),Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例(新名称 Percona Server)连接起来&am…

mysql pxc 安装_MYSQL PXC 集群安装

名词介绍: WS:write set写数据集 IST: Incremental State Transfer增量同步 SST:State Snapshot Transfer全量同步 1.准备环境 1.1 centos 7系统,三台主机 IP分别为:192.168.80.163;192.168.80.167;192.168…

kubernetes mysql pxc_PXC快速入门

C C语言开发 PXC快速入门 1.快速入门 实验环境: Node Host IPNode1 pxc1 192.168.70.61 Node2 pxc2 192.168.70.62 Node3 pxc3 192.168.70.63 1.1 安装Percona-XtraDb-Cluster yum源: [percona] namepercona_repo baseurl https://mirrors.tuna.tsinghu…

mysql pxc

一、PXC介绍 Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。XtraDB可以看做是InnoDB存储引擎的增强版本,它完全兼容InnoDB,且提供了很多InnoDB不具…

mysql pxc集群 原理 (图解+秒懂+史上最全)

文章很长,而且持续更新,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 免费赠送 经典图书 : 极致经典 社群大片好评 《 …