一、配置文件yaml的写法##map的写法1 friends: {lastName: zhangsan,age: 18} ##map的写法2 friends: lastName: zhangsan age: 20 ###list、set写法1 pets: - cat - dog - pig ###list、set写法2 pets: [cat,dog,pig] ##单引号会将\
转载 2024-06-05 14:32:51
32阅读
SpringBoot3核心原理事件和监听器生命周期监听场景:监听应用的生命周期可以通过下面步骤自定义SpringApplicationRunListener来监听事件。 ①、编写SpringApplicationRunListener实现类 ②、在META-INF/spring.factories中配置org.springframework.boot.SpringApplicationRunLis
上篇推文从源码剖析SpringBoot中Tomcat的默认最大连接数中我们知道,SpringBoot的内嵌Tomcat默认的最大连接数为200。那么,这个默认值对于项目中引入了WebSocket使用长连接后,是否足够用呢?今天强哥就带大家一起从源码的角度来分析一下。我们还是从上一篇推文给的代码入手(需要源码的小伙伴可后台回复:WebSocket获取)。强哥想了想,要判断200个线程是否够,可能并不
叙述SpringBoot的项目在使用内置的Tomcat部署时,需要定义相关的Tomcat参数,本文主要讲述需要配置哪些参数。代码server: tomcat: accesslog: enabled: false #打开tomcat访问日志 directory: logs # 访问日志所在的目录 accept-count: #允许HTTP请求缓存到请求队列
转载 2024-03-29 15:29:30
178阅读
我之前直接使用 spring-boot-starter-mail 来发邮件,结果在邮件量多的时候,系统被严重拖慢,并且响应不过来,所以如果你的邮件量比较多,可以这样设计:1.单独创建一个SpringBoot的项目分布式来发送邮件。2.发送邮件时要使用异步方式,如果我们使用的是SpringBoot的@Async,底层已经帮我们解决了线程池的问题,在西方伯后面会有关于SpringBoot@Async的
前言最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Sring是以配置文件的形式来开启@Asy
前言前两天面试的时候,面试官问我:一个ip发请求过来,是一个ip对应一个线程吗?我突然愣住了,对于SpringBoot如何处理请求好像从来没仔细思考过,所以面试结束后就仔细研究了一番,现在就来探讨一下这个问题。正文我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理
# Spring Boot 中的默认核心线程数 在使用 Spring Boot 进行开发时,开发者常常需要对应用程序的性能进行优化,线程管理是其中一个重要的方面。Spring Boot 默认为每个应用配置了一些线程池参数,其中核心线程数的设置是我们优化线程管理时需要关注的一个关键点。 ## 1. 核心线程数的概念 核心线程数是指在线程池中,能够保持活动状态的线程数量。当有新的任务被提交到线程
原创 7月前
107阅读
文章目录1 配置自己的线程池2 使用2.1 在Service层使用2.2 多线程中使用事务的写法2.3 方法内多线程2.3.1 错误写法2.3.2 正确写法(一)2.3.2 正确写法(二)2.3.3 正确写法(三)3 线程池与并行流的选取 1 配置自己的线程池@Configuration @EnableAsync public class ThreadPoolConfig { // 核心线程
一、spring是如何启动的springboot的启动代码非常简洁优雅,通常只需一个注解@SpringBootApplication和一行代码就能将应用启动起来:SpringApplication.run(App.class, args);主线程执行完后,由于有其他非daemon线程还存活着(例如tomcat的线程),所以整个应用在没有发生重启的情况下能实现7*24不间断运行。这一个run方法最后
转载 2024-03-22 10:37:00
89阅读
1.配置线程池使用springboot配置线程池,采用@EnableAsync和@Configuration注解,配置代码如下@EnableAsync @Configuration public class SpringThreadPoolConfig { @Value("${mythreadpool.maxPoolSize}") private Integer maxPoolS
RabbitMQ是咩???RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现, 能够实现异步消息处理言简意赅的讲:RabbitMQ是一个消息代理:它接受和转发消息rabbitmq 优势: 基于 erlang 语言开发, 具有高并发优点、 支持分布式 具有消息确认机制、 消息持久化机制, 消息可靠性和集群可靠性高 简单易用
写在前面最近看到很一篇文章说SpringBoot项目中@Async默认线程池会导致OOM,因为我的项目中也用到@Async注解,所以赶紧看了一下,在网上搜索@Async导致OOM案例还是很多的,于是我我就研究了一下。Demo项目演示使用SpringBoot 2.0.9.RELEASE 创建演示工程,项目比较简单,使用@EnableAsync开启异步,在TaskService中@Async开启方法异
转载 2024-07-05 12:08:18
103阅读
# Spring Boot 默认 MySQL 线程池详解 在现代的 Java Web 开发中,Spring Boot 是一个不可或缺的框架,它简化了配置并加快了开发速度。在与数据库交互时,连接池的使用尤其重要,因为它能够提高数据库操作的效率。本文将探讨 Spring Boot 中默认使用的 MySQL 线程池,重点包括它的配置与使用方式,并附带相关示例代码。 ## 什么是连接池? 连接池是一
原创 7月前
45阅读
CompletableFuture详解概要Runnable+Thread虽然提供了多线程的能力但是没有返回值。Callable+Thread的方法提供多线程和返回值的能力但是在获取返回值的时候会阻塞主线程。上述的情况只适合不关心返回值,只要提交的Task执行了就可以。另外的就是能够容忍等待。CompletableFuture是jdk8的新特性。CompletableFuture实现了Complet
在开发spring boot应用服务的时候,难免会使用到异步任务及线程池。spring boot的线程池是可以自定义的,所以我们经常会在项目里面看到类似于下面这样的代码@Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); execu
转载 2024-07-05 14:03:35
305阅读
前言 前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了后面就想到了线程池ThreadPoolExecutor,而用的是Spring Boot项目,可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用推荐下自己做的 Spring
在后端开发中经常遇到一些耗时或者第三方系统调用的情况,我们知道Java程序一般的执行流程是顺序执行(不考虑多线程并发的情况),但是顺序执行的效率肯定是无法达到我们的预期的,这时就期望可以并行执行,常规的做法是使用多线程线程池,需要额外编写代码实现。在spring3.0后引入了@Async注解,使用该注解可以达到线程池的执行效果,而且在开发上非常简单。一、概述springboot是基
1. TaskExecutorSpring异步线程池的接口类,其实质是java.util.concurrent.ExecutorSpring 已经实现的异常线程池:1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方3. Co
转载 2024-03-22 10:09:31
84阅读
Springboot内置Tomcat配置参数调优,首先,线程数是一个重点,每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求。比较重要的有两个:初始线程数和最大线程数。初始线程数:保障启动的时候,如果有大量用户访问,能够很稳定的接受请求。最大线程数:用来保证系统的稳定性。超时时间:用来保障连接数不容易被压垮。如果大批量的
  • 1
  • 2
  • 3
  • 4
  • 5