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

    三、测试结果

  • 相关阅读:
    关于Thread ThreadPool Parallel 的一些小测试demo
    VS附加到进程调试
    netcore 实现一个简单的Grpc 服务端和客户端
    CodeSmith 找不到请求的 .Net Framework Data Provider
    ocelot集成consul服务发现
    使用ocelot作为api网关
    关于add migration 报错的问题解决方案
    关于多线程efcore dbcontext 的解决方案。
    docker mysql 容器报too many connections 引发的liunx磁盘扩容操作
    关于liunx 机器脱机环境(netcore)Nuget包迁移的问题
  • 原文地址:https://www.cnblogs.com/my-program-life/p/12047418.html
Copyright © 2011-2022 走看看