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

    三、测试结果

  • 相关阅读:
    C++ 将对象写入文件 并读取
    IronPython fail to add reference to WebDriver.dll
    How to Capture and Decrypt Lync Server 2010 TLS Traffic Using Microsoft Tools
    .net code injection
    数学系学生应该知道的十个学术网站
    Difference Between Currency Swap and FX Swap
    Swift开源parser
    谈谈我对证券公司一些部门的理解(前、中、后台)[z]
    JDK8记FullGC时候Metaspace内存不会被垃圾回收
    JVM源码分析之JDK8下的僵尸(无法回收)类加载器[z]
  • 原文地址:https://www.cnblogs.com/my-program-life/p/12047418.html
Copyright © 2011-2022 走看看