首页 > 其他分享 >Spring Boot 项目中如何使用异步任务

Spring Boot 项目中如何使用异步任务

时间:2024-10-08 15:48:49浏览次数:3  
标签:异步 Spring Boot 任务 线程 executor 执行 public

前置知识:

同步任务:

  • 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等并发问题

  • 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用户体验

异步任务:

  • 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源利用率高,用户体验好

  • 异步任务需要创建额外的线程来执行任务操作,可以使用线程池技术,灵活配置线程资源,以提高系统的资源利用率

SpringBoot实现异步任务,提高系统的并发性能和用户体验

步骤:

  1. 创建线程池配置类

/**
 * 线程池配置类
 */
@Configuration
@EnableAsync //  启用异步任务
public class ThreadPoolConfig {

    @Bean
    public Executor taskExecutor() {
        // 定义线程池,使用Spring提供的ThreadPoolTaskExecutor
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(10); // 核心线程数
        executor.setMaxPoolSize(20); // 最大线程数
        executor.setQueueCapacity(50); // 缓冲队列大小
        executor.setKeepAliveSeconds(60); // 线程的空闲时间
        executor.setThreadNamePrefix("AsyncTaskExecutor-"); // 线程前缀
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒绝处理策略,交由调用方线程运行
        executor.initialize(); // 初始化
        return executor;
    }

}

        2. 创建异步任务,使用@Async注解标注

@Component
public class AsyncTask {

    @Async // 表示该方法是一个异步任务
    public void doTask() {
        System.out.println("异步任务--------" + Thread.currentThread().getName());
    }
}

        3.测试

@SpringBootTest
public class AsyncTest {

    @Resource
    private AsyncTask asyncTask;

    @Test
    public void test() {
        System.out.println("主线程---------" + Thread.currentThread().getName());
        asyncTask.doTask();
    }
}

案例:

Spring Boot 项目中如何使用异步任务(案例)

标签:异步,Spring,Boot,任务,线程,executor,执行,public
From: https://blog.csdn.net/qq_58341172/article/details/142761875

相关文章

  • MQ核心作用异步&削峰&解耦使用场景详解
    说在前面在如今的高并发互联网应用中,如何确保系统在巨大的流量冲击下还能稳稳当当运转,是每个技术团队都会遇到的挑战。说到这,消息队列(MQ)就是背后的“大功臣”了。无论是异步处理请求、平滑应对流量高峰,还是让各个系统模块相互独立不“拖后腿”,MQ都是不可或缺的帮手。那么,MQ是......
  • spring5 中 RestTemplate 如何使用
    在Spring5中,RestTemplate是一个用于同步地执行HTTP请求并消费RESTfulWeb服务的客户端工具。尽管RestTemplate已被建议逐步被替代为WebClient(SpringWebFlux的一部分)以支持响应式编程模型,但它仍然是处理同步请求的常用工具之一,并且在许多现有项目中广泛使用。基本使......
  • 飘香水果购物网站:SpringBoot技术实现细节
    3系统分析3.1可行性分析通过对本飘香水果购物网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本飘香水果购物网站采用JAVA作为开发语言,SpringBoot框架,是基于WEB平......
  • SpringBoot飘香水果网站:从概念到实现
    3系统分析3.1可行性分析通过对本飘香水果购物网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本飘香水果购物网站采用JAVA作为开发语言,SpringBoot框架,是基于WEB平......
  • 基于SpringBoot实现智能学习辅助系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 【开题报告】基于Springboot+vue沙县小吃收银系统设计与实现(程序+源码+论文) 计算机毕
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在快速发展的数字化时代,餐饮行业正经历着前所未有的变革。沙县小吃,作为中国小吃文化的杰出代表,以其独特的风味和亲民的价格赢得了广泛的消费者基础。......
  • 【开题报告】基于Springboot+vue家乡特产销售系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今数字化快速发展的时代,电子商务已成为推动地方经济发展、促进特产销售的重要渠道。家乡特产作为地方文化和经济的重要载体,蕴含着丰富的历史底蕴......
  • SpringBoot技术在飘香水果购物网站中的应用
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 飘香水果购物网站:基于SpringBoot的架构设计
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 【开题报告】基于Springboot+vue数字集成电路设计课程线上仿真实验平台的设计与实现(程
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,数字集成电路设计已成为现代电子工程领域的核心技能之一。然而,传统的教学模式受限于物理实验室资源、时间地点等因素,难以满足......