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