首页 > 其他分享 >springboot 使用@Async注解实现异步多线程

springboot 使用@Async注解实现异步多线程

时间:2023-02-21 14:34:54浏览次数:32  
标签:count springboot sum Integer result new Async 多线程 public

1、在启动类中添加注解

@SpringBootApplication
@EnableAsync
//@ImportResource(locations = {"classpath:spring/my.xml"})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

 2、写异步调用的类和方法

@Service
@Slf4j
public class UserService {
    @Async
    public Future<Integer> sum(Integer a, Integer b){
        log.info("sum thread:"+Thread.currentThread().getName());
        return new AsyncResult(a+b);
    }
    @Async
    public Future<Integer> count(Integer a,Integer b){
       log.info("count thread:"+Thread.currentThread().getName());
        return new AsyncResult(a+b);
    }
}

 3、异步调用

 @RequestMapping("/show")
    public String show() {
//调用 Future<Integer> sum = userService.sum(10, 10); Future<Integer> count = userService.count(20, 20); List<Future> result = new ArrayList<>();
//保存返回 result.add(sum); result.add(count);
//获取返回值 Integer totleSum = null; try { totleSum = (Integer) result.get(0).get(); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } Integer totleCount = null; try { totleCount = (Integer) result.get(1).get(); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } return "env:sum="+totleSum+",count="+totleCount; }

 

标签:count,springboot,sum,Integer,result,new,Async,多线程,public
From: https://www.cnblogs.com/niun/p/17140921.html

相关文章

  • CompletableFuture.runAsync异常不处理后果
    不处理异常的话,线程异常结果会在获取时才会暴露 不处理:  获取线程结果异常: ......
  • Springboot整合JWT封装工具类篇(二)
    前言:这里是将Springboot整合JWT测试篇(一)封装成工具类publicclassJWTUtils{//秘钥自己保管好privatestaticStringSECRET="token!Q@W3e4r";/**......
  • Springboot整合JWT测试篇(一)
    一、pom文件中引入依赖<!--引入jwt--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version></dependency>......
  • Vue 中 Promise 的then方法异步使用及async/await 异步使用总结
    转载请注明出处:1.Promise的then方法使用then方法是 Promise中处理的是异步调用,异步调用是非阻塞式的,在调用的时候并不知道它什么时候结束,也就不会等到他返回......
  • eclipse创建springBoot项目
    创建SpringBoot工程先在eclipse中安装spring-tool-suite插件,然后根据以下步骤可以创建1、新建SpringStarterProject2、Packaging选择jar 3、勾选Web项 4、项目结......
  • 为啥Python多线程爬虫跑的慢?
    单线程和多线程进行数据抓取结果还是大有不同的,但是要值得注意的事,如果多线程没调配好可能连单线程的效率都比不上。本次就和大家一起聊一聊单线程多线程的一些需要注意的......
  • 多线程并发(二):聊聊AQS中的共享锁实现原理
    在上一篇文章多线程并发(一)中我们通过acquire()详细地分析了AQS中的独占锁的获取流程,提到独占锁,自然少不了共享锁,所以我们这边文章就以AQS中的acquireShared()方法为例,......
  • Python多线程如何保证数据安全
    之前有一篇文章分享了有关Python多线程的一次基础语法以及GIL的相关概念,今天我们重点讲解多线程的数据安全问题。数据安全问题我们首先来举一个例子,这里定义两个函数,一个......
  • SpringBoot集成Tomcat服务
    目录一、Tomcat集成1、依赖层级2、自动化配置二、Tomcat架构三、Tomcat配置1、基础配置2、属性配置类3、配置加载分析四、周期管理方法1、控制类2、核心方法五、参考源码......
  • 基于 springboot + mybatis-plus + MySQL 重构过去一个项目的踩坑总结(持续更新)
    ①使用mybatis-plus时,如果根据某个条件查询没有查到数据,那么返回的实体类是null,如果使用get方法就会导致空指针异常,这点要规避②如果Map初始化在循环体外,那么在循......