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

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

时间:2024-10-08 15:48:49浏览次数:15  
标签:异步 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

相关文章

  • SpringBoot飘香水果网站:从概念到实现
    3系统分析3.1可行性分析通过对本飘香水果购物网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本飘香水果购物网站采用JAVA作为开发语言,SpringBoot框架,是基于WEB平......
  • 基于SpringBoot实现智能学习辅助系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......