SpringBoot多线程

永线程池就不会内存泄漏,否则一直创建线程了(如果业务量大很危险了,中断报警…?)

【@EnableAsync实现异步任务,简单用法】-CSDN博客

两种方法:

1、在启动类上加@EnableAsync注解(@Async默认的线程池是SimpleAsyncTaskExecutor)

1.SimpleAsyncTaskExecutor,不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程,没有最大线程数设置。并发大的时候会产生严重的性能问题。

创建新线程、无限、不重用。这和我们印象中的的线程池不一样,可以说是相悖的,完美躲过线程池优势。

线程池的优势:

降低创建线程和销毁线程的性能开销。
提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立马执行。
合理的设置线程池大小可以避免因为线程数超过硬件资源瓶颈带来的问题。


2.在Java中创建线程并不便宜,线程对象占用大量内存,在大型应用程序中,分配和取消分配许多线程对象会产生大量内存管理开销。
                        
原文链接:Spring默认线程池SimpleAsyncTaskExecutor-CSDN博客

2、在需要实现异步的方法上加@Async(如果加在类上,那么类中全部方法都实现异步,建议加载具体需要实现异步的方法上)

二、使用自定义线程池(推荐)

1、新建一个自定义线程池配置类@Configuration(配合bean)

2、方法上用到@Async注解需要指定线程池的Bean名字(如果配置了一个线程池,直接用@Async就会用自定义线程池执行,如果有多个线程池配置,需要指定自定义线程池的Bean名字,否则@Async会使用默认的线程池SimpleAsyncTaskExecutor处理)

 

 

SpringBoot开启异步多线程_springboot 异步线程-CSDN博客

这个就是推荐用法了

失效原因之一(要注意):

在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法_java async调用了两次-CSDN博客

了解了失效的原因,解决的方法就简单了(两种):
1.把这两个方法分开到不同的类中;
2.把注解加到类名上面(这个类所有方法may都有注解的效果了..);

java常用多线程(如果不用上面注解,一般都用线程池&实现Callable接口重写call()方法实现多线程):

java 多线程实现的三种方式区别_java 多线程区别-CSDN博客

如下就是实战用的:

import java.util.concurrent.Callable;public class MyCall implements Callable<Long> {private int num;private String threadName;private long result;public MyCall(int num, String threadName) {this.threadName = threadName;this.num = num;}public Long call() throws Exception {for (int i = 0; i < num; i++) {result += i;}return result;}
}// 线程池方式测试import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class ThreadPool {public static void main(String[] args) throws ExecutionException, InterruptedException {MyCall myCall_1 = new MyCall(10, "call_1");MyCall myCall_2 = new MyCall(10000, "call_2");ExecutorService service = Executors.newFixedThreadPool(5);Future<Long> f1 = service.submit(myCall_1);Future<Long> f2 = service.submit(myCall_2);System.out.println(f1.get());    // 获取返回System.out.println(f2.get());    // 获取返回service.shutdown();}
}

 

 

java小语法:

9485d837d0164206948ecf8ae65b85ef.png
package thread;:这行代码声明了当前文件中的类属于 thread 包。包的作用是将相关的类和接口组织在一起,便于管理和避免命名冲突。但是实际不属于这个包,没必要硬来

线程快慢输出问题:(笔试题)

java多线程顺序输出_java: 第1关:顺序输出-CSDN博客

这个文章用到了join知识:java中join方法的理解和说明_5.join方法内部使用了()。(2分)aisaliveb.isdaemoncisactiv-CSDN博客

java 中的 join() 方法在多线程中会涉及到,这个方法最初理解起来可能有点抽象,用一两次大概就懂了。简单说就是当前线程等待调用join方法的线程结束才能继续往下执行

54d96b183a7b4438b4e0d9d1e443ed20.png

这相当于同时启动

-------------------

Java子线程和主线程交替输出(一个简单的实例)_java主线程中start另一个线程,是继续主线程结果输出完马上输出另一个线程-CSDN博客

 

线程同步知识(见到在学了):

java 中轻量级volatile同步字段解释_java 同步字段-CSDN博客

java 的 synchronized 同步方法使用场景举例解读_java 全局缓存采用synchronized示例-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——五种IO模型

目录 一IO基本理解 二五种IO模型 1五种IO模型示意图 2同步IO和异步IO 二非阻塞IO 1fcntl 2实现非阻塞IO 三多路复用 1select 1.1定位和作用 1.2介绍参数 1.3编写多路复用代码 1.4优缺点 2poll 2.1作用和定位 2.2介绍参数 2.3修改select代码 3epoll 3.1介绍…

[论文阅读]SimCSE: Simple Contrastive Learning of Sentence Embeddings

SimCSE&#xff1a;句子嵌入的简单对比学习 SimCSE: Simple Contrastive Learning of Sentence Embeddings http://arxiv.org/abs/2104.08821 EMNLP 2021 文章介绍了SimCSE&#xff0c;这是一种简单的对比学习框架&#xff0c;采用了自监督来提升模型的句子表示能力 而自监…

【网络原理】——图解HTTPS如何加密(通俗简单易懂)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;HTTP为什么不安全 二&#xff1a;HTTPS加密过程 1&#xff1a;密码学中的概念 &…

apt的编译安装(古老通讯)

Ubuntu系统的防火墙关闭&#xff1a; ufw disable 第一步&#xff1a;Ubuntu 安装依赖环境 apt -y install libpcre3-dev zlib1g-dev libssl-dev build-essential 如果出现无法下载则在末尾处假如 --fix missing如下图所示 出现下图则为安装成功 第二步&#xff1a; useradd…

上市公司企业数字金融认知数据集(2001-2023年)

一、测算方式&#xff1a;参考C刊《经济学家》王诗卉&#xff08;2021&#xff09;老师的做法&#xff0c;数字金融认知使用每万字年报描述中包含的对数字金融相关关键词的提及次数&#xff0c;关键词为&#xff1a;互联网、数字化、智能、大数据、电子银行、金融科技、科技金融…

LivePortrait——生成可拼接和重定向控制的高效肖像动画翻译

文章目录 原文翻译Abstract1. Introduction2. Related Work2.1. Non-diffusion-based Portrait Animation2.2. Diffusion-based Portrait Animation 3. Methodology3.1. Preliminary of Face Vid2vid3.2. Stage I: Base Model Training3.3. Stage II: Stitching and Retargetin…

快来免费参加交通领域重量级会议:第十三届交通运输研究(上海)论坛

一、会议简介 交通运输研究&#xff08;上海&#xff09;论坛&#xff08;简称为TRF&#xff09;是按照国际会议的组织原则&#xff0c;为综合交通运输领域学者们构建的良好 合作交流平台。交通运输研究&#xff08;上海&#xff09;论坛已经成功举办了十二届&#xff0c;凝聚了…

zabbix 6.0 监控clickhouse(单机)

zabbix 6.0 LTS已经包含了clickhouse的监控模板&#xff0c;所以我们可以直接使用自带的模板来监控clickhouse了。 0.前置条件 clickhouse 已经安装&#xff0c;我安装的是24.3.5.47zabbix-agent 已经安装并配置。系统是ubuntu 2204 server 1. 新建监控用户 使用xml的方式为…

机架式服务器:

外观&#xff1a;机架式服务器按照统一标准设计&#xff0c;通常安装在机柜中。 规格&#xff1a;机架式服务器有不同的规格&#xff0c;如1U&#xff08;高度约4.45厘米&#xff09;、2U、4U、6U、8U等。 应用范围&#xff1a;适用于数据中心、企业级应用和大规模部署

【JVM第1课】Java 跨平台原理

无痛快速学习JVM&#xff0c;欢迎订阅本免费专栏 JVM Java的特性就是程序员一次编写&#xff0c;到处运行&#xff0c;意思是我们只需要写一份代码&#xff0c;就可以在不同的操作系统&#xff08;windows、Linux、Mac OS等&#xff09;中运行。但是不同的操作系统能看懂的指令…

RabbitMQ替换默认端口

前提&#xff1a;客户通过漏洞扫描&#xff0c;发现rabbitmq中的erlang是默认端口4369&#xff0c;出于安全的考虑&#xff0c;需要将erlang的端口修改为其他的端口。 1.查看默认erlang的默认端口 netstat -plnt | grep 4369 2.关闭rabbitmq rabbitmqctl stop&#xff08;注…

【MySQL】 运维篇—备份与恢复:使用mysqldump进行数据库备份与恢复

无论是企业应用、电子商务平台还是社交媒体&#xff0c;数据的安全性和完整性都是至关重要的。数据库备份是一种保护措施&#xff0c;确保在数据丢失、损坏或系统故障时&#xff0c;可以快速恢复数据&#xff0c;保持业务的连续性和稳定性。 应用场景 意外数据丢失&#xff1a…

Linux上配置NFS服务

架设一台NFS服务器&#xff0c;并按照以下要求配置&#xff1a; 1、开放/nfs/shared目录&#xff0c;供所有用户查询资料&#xff1a; 2、开放/nfs/upload目录&#xff0c;为192.168.xxx.0/24网段主机可以上传目录&#xff0c;并将所有用户及所属的组映射为nfs-upload,其UID和…

MySQL数据库MHA高可用

目录 一、MHA简述 二、MHA 的组成 三、MHA 的特点 四、MHA工作原理 五、MHA部署步骤 六、搭建 MySQL MHA MHA一主两从高可用集群示意图 实验环境 1. Master、Slave1、Slave2 节点上安装 mysql5.7 2. 关闭防火墙 3. 修改 Master、Slave1、Slave2 节点的主机名 4. 修…

【http作业】

1.关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld #关闭防火墙 [rootlocalhost ~]# setenforce 0 2.下载nginx包 [rootlocalhost ~]# mount /dev/sr0 /mnt #挂载目录 [rootlocalhost ~]# yum install nginx -y #下载nginx包 3.增加多条端口 [rootlocalhost ~]# n…

docker build cache 占用磁盘空间很高

一、查看docker 构建缓存占用空间 二、清理 三、查看

PostgreSQL 删除重复数据

我们常常会遇到这样的问题&#xff0c;就是数据重复。然后我们需要对重复数据进行删除。保留最大还是最小则根据具体业务来判断。 假设有表 vbi1 在设计表的时候由于 vbi01 没有被设置为主键&#xff0c;这个时候业务发现 vbi01 重复了&#xff0c;我们需要根据字段 vbi01 来删…

优选算法专题一 ——双指针算法

&#x1f308;个人主页&#xff1a;小新_- &#x1f388;个人座右铭&#xff1a;“成功者不是从不失败的人&#xff0c;而是从不放弃的人&#xff01;”&#x1f388; &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f3c6;所属专栏&#xff1…

2025年NPDP产品经理认证考试时间和报考条件

在报考2025年NPDP认证考试前&#xff0c;了解NPDP相关考试信息是非常重要的,可以帮助我们更好地制定备考计划&#xff0c;提高学习效率。 NPDP考试时间 NPDP考试每年举办两次&#xff0c;分别在5月和11月进行&#xff0c;且考试一般安排在周末&#xff0c;以便在职的专业人士…

敢为人先 创世富尔是如何引领磁性元件磁集成技术风向的

【哔哥哔特导读】2021年便已实现车载OBC磁集成产品的量产&#xff0c;创世富尔将如何通过磁集成技术改变电源行业生态&#xff0c;并确立自身的领先优势&#xff1f; 自2023年新能源汽车厂商开启价格战以来&#xff0c;这波内卷逐渐蔓延至所有终端领域&#xff0c;加上上游材料…