首页 > 其他分享 >SpringBoot的@Async注释的用法并例子

SpringBoot的@Async注释的用法并例子

时间:2023-04-02 12:04:37浏览次数:36  
标签:异步 SpringBoot doSomething 用法 CompletableFuture Async 方法 public

在Spring Boot中,@Async注解用于将一个方法标记为异步执行的方法。使用该注解的方法将在一个单独的线程中异步执行,而不会阻塞调用线程。这对于处理需要长时间运行的任务或需要异步处理的任务非常有用。

下面是一个简单的示例:

@Service
public class MyService {

    @Async
    public CompletableFuture<String> doSomething() {
        // 长时间运行的任务
        // ...
        return CompletableFuture.completedFuture("Task completed!");
    }

}

在上面的示例中,doSomething() 方法被标记为异步方法,并返回一个CompletableFuture对象,用于异步结果处理。

可以通过调用CompletableFuture.get()方法获取异步结果:

@RestController
public class MyController {

    @Autowired
    private MyService myService;

    @GetMapping("/async")
    public String doAsyncTask() throws InterruptedException, ExecutionException {
        CompletableFuture<String> future = myService.doSomething();
        return future.get(); // 等待异步任务完成并返回结果
    }

}

在上面的示例中,doAsyncTask()方法将调用doSomething()方法,并通过调用future.get()方法等待异步任务完成并返回结果。由于doSomething()方法是异步执行的,因此doAsyncTask()方法不会阻塞调用线程,而是立即返回,这使得该方法在等待异步任务完成时可以处理其他请求。

标签:异步,SpringBoot,doSomething,用法,CompletableFuture,Async,方法,public
From: https://www.cnblogs.com/ldh-0319/p/17280183.html

相关文章

  • springboot-监听器
    监听器ApplicationListener可以实现这个接口时传入对应的监听器,用于监听该事件比如:实现ApplicationListener<ContextRefreshedEvent>接口,重写onApplicationEvent方法,将ContextRefreshedEvent对象传进去。如果我们想在加载或刷新应用上下文时,也重新刷新下我们预加载的资源......
  • SpringBoot中Mybatis的应用
    创建一个SpringBoot项目,然后如下操作:(1)添加Lombok插件--简化实体类 (2)添加Mybatis框架和MySQL驱动---访问Mysql和使用Mybatis (3)创建pojo包和实体类在项目中创建pojo包,并在其中创建实体类。实体类上可以使用Lombok注解。首次使用时,需要在Ieda中安装该插件。L......
  • SpringBoot定时任务
    使用注解@Scheduled1.在启动类上添加注解@EnableScheduling开启定时任务2.创建定时任务@ComponentpublicclassStatisticsComp{/***日统计(每日0点1分触发)*/@Scheduled(cron="010?**")publicvoiddailyStatistics(){}/**......
  • springboot-自己开发start
    步骤命名规范第三方在建立自己的Starter的时候命名规则统一用xxx-spring-boot-starter,官方提供的Starter统一命名方式为spring-boot-starter-xxx。步骤新建一个Maven项目,在pom.xml文件中定义好所需依赖;新建配置类,写好配置项和默认值,使用@ConfigurationProperties指明......
  • 【SpringBoot】关闭SpringBoot启动图标(banner)
    SpringBoot启动的时候会有如下图标如果想去掉此图标在配置文件添加一下内容配置文件:application.yml添加内容:spring:main:banner-mode:off#关闭SpringBoot启动图标(banner) ......
  • 常用注解-SpringBoot请求
    SpringBoot请求常用注解及作用范围:@Controller:【类】需要返回一个视图(themleaf),加注解4@ResponseBody等于注解2@RestController:【类】返回字符串等,与注解1都属于控制器,@RequestMapping:【方法/类】设置方法或者类的请求地址,@ResponseBody:【方法】支持将返回值放在response......
  • SpringBoot进阶教程(七十五)数据脱敏
    无论对于什么业务来说,用户数据信息的安全性无疑都是非常重要的。尤其是在数字经济大火背景下,数据的安全性就显得更加重要。数据脱敏可以分为两个部分,一个是DB层面,防止DB数据泄露,暴露用户信息;一个是接口层面,有些UI展示需要数据脱敏,防止用户信息被人刷走了。v需求背景DB层面的......
  • SpringBoot项目启动时初始化操作方式
    1.实现InitializingBean重写afterPropertiesSet()方法。@Component@Slf4jpublicclassInitOneTestimplementsInitializingBean{@OverridepublicvoidafterPropertiesSet()throwsException{log.info("InitOneTestinitsuccess");}}2......
  • springboot和redis执行lua脚本——踩坑
    问题:原先想使用redis执行lua脚本作为项目限流基础,lua脚本后写完后执行一直报错如下图:  卡了几天了,没看明白咋回事,一次偶然试了一下解决了,传递lua参数需要时String类型难怪说报错强转String类型异常  灵感来源参考文章:踩坑之RedisTemplate执行Lua脚本-知乎(zhihu.c......
  • AsyncTask重复运行报错的解决办法。
      接着这节课老师讲的内容,因为AsyncTask只可以运行一次,如果你在AsyncTask运行中再次点击START按钮的话,也会引发一个崩溃报错(如图)  Cannotexecutetask:thetaskisalreadyrunning.翻译过来的意思是:无法执行任务,任务已经在运行中。这就是在AsyncTask运行中,又点击了......