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

    三、测试结果

  • 相关阅读:
    编译nginx时openssl报错的解决方案
    编译nginx时make报错[-Werror=implicit-fallthrough=]的解决方案
    centos8下编译安装tomcat
    解决centos安装不上apache:No match for argument: httpd
    编译安装apache
    编译apache出现gcc: error: /usr/lib/rpm/redhat/redhat-hardened-ld: No such file or directory
    配置与管理FTP服务器
    2018icpc南京现场赛-I Magic Potion(最大流)
    Codeforces 1062B Math(质因数分解)
    BZOJ 1009 [HNOI2008]GT考试(矩阵快速幂优化DP+KMP)
  • 原文地址:https://www.cnblogs.com/my-program-life/p/12047418.html
Copyright © 2011-2022 走看看