欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Spring Boot 项目中如何使用异步任务

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

2024/11/29 19:32:38 来源:https://blog.csdn.net/qq_58341172/article/details/142761875  浏览:    关键词:Spring Boot 项目中如何使用异步任务

前置知识:

同步任务:

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

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

异步任务:

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

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

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

步骤:

  1. 创建线程池配置类

/*** 线程池配置类*/
@Configuration
@EnableAsync //  启用异步任务
public class ThreadPoolConfig {@Beanpublic Executor taskExecutor() {// 定义线程池,使用Spring提供的ThreadPoolTaskExecutorThreadPoolTaskExecutor 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 {@Resourceprivate AsyncTask asyncTask;@Testpublic void test() {System.out.println("主线程---------" + Thread.currentThread().getName());asyncTask.doTask();}
}

案例:

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com