zoukankan      html  css  js  c++  java
  • Spring Boot任务管理之有返回值异步任务调用

    https://www.cnblogs.com/my-program-life/p/12047396.html  Spring Boot任务管理之无返回值异步任务调用

    一、在OwnAsynService基础上添加

    package com.uos.schedule.service;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.scheduling.annotation.AsyncResult;
    import org.springframework.stereotype.Service;
    import java.util.concurrent.Future;
    @Service
    public class OwnAsynService {
        @Async
        public void sendSMS() throws InterruptedException{
            System.out.println("调用短信验证服务方法");
            Long startTime = System.currentTimeMillis();
            Thread.sleep(5000);
            Long endTime=System.currentTimeMillis();
            System.out.println("短信业务执行消耗完成时间:	"+(endTime-startTime));
        }
        @Async
        public Future<Integer> processA() throws InterruptedException {
            System.out.println("开始分析并统计业务A数据......");
            Long startTime = System.currentTimeMillis();
            Thread.sleep(4000);
            int count = 123456;
            Long endTime = System.currentTimeMillis();
            System.out.println("业务A数据统计消耗时间:	" + (endTime - startTime));
            return new AsyncResult<>(count);
        }
        @Async
        public Future<Integer> processB() throws InterruptedException {
            System.out.println("开始分析并统计业务B数据......");
            Long startTime = System.currentTimeMillis();
            Thread.sleep(5000);
            int count = 456789;
            Long endTime = System.currentTimeMillis();
            System.out.println("业务B数据统计消耗时间:	" + (endTime - startTime));
            return new AsyncResult<>(count);
        }
    
    }
    OwnAsynService

    二、在OwnAsynController基础上添加

    package com.uos.schedule.controller;
    
    import com.uos.schedule.service.OwnAsynService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    
    /**
     *控制层
     */
    @RestController
    public class OwnAsyncController {
        @Autowired
        private OwnAsynService ownAsynService;
    
        @GetMapping(value = {"sendSMS"})
        public String sendSMS() throws InterruptedException {
            Long startTime = System.currentTimeMillis();
            ownAsynService.sendSMS();
            Long endTime = System.currentTimeMillis();
            System.out.println("主业务执行消耗完成时间:	" + (endTime - startTime));
            return "success";
        }
        @GetMapping(value = {"statics"})
        public String statics() throws InterruptedException, ExecutionException {
            Long startTime = System.currentTimeMillis();
            Future<Integer>futureA=ownAsynService.processA();
            Future<Integer> futureB=ownAsynService.processB();
            int total=futureA.get()+futureB.get();
            System.out.println("异步任务数据统计汇总结果:	"+total);
    
            Long endTime = System.currentTimeMillis();
            System.out.println("主业务执行消耗完成时间:	" + (endTime - startTime));
            return "success";
        }
    }
    OwnAsyncController

    三、测试结果

  • 相关阅读:
    POJ 3273 :Monthly Expense【二分+贪心】
    POJ 3104 Drying【二分】
    Codeforces Round #402 (Div. 2)
    PAT 天梯赛真题集
    PAT 乙级 (将剩下的做了)
    CCPC 2016-2017, Finals (慢慢做,慢慢更新)
    Spring注解开发
    SpringMVC+SSM框架
    Spring5 Framework(IOC+AOP+整合Mybatis事务)
    IDEA 使用小技巧
  • 原文地址:https://www.cnblogs.com/my-program-life/p/12047418.html
Copyright © 2011-2022 走看看