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

    三、测试结果

  • 相关阅读:
    MongoDB新存储引擎WiredTiger实现(事务篇)
    mongodb存储引擎WiredTiger
    WiredTiger 4.1.0 发布,MongoDB 存储引擎
    MongoDB存储引擎、索引 原
    MongoDB Wiredtiger存储引擎实现原理
    MongoDB 副本集
    MongoDB 聚合
    MongoDB 索引
    mongodb 开发规范
    MongoDB 基本操作 数据库、集合
  • 原文地址:https://www.cnblogs.com/my-program-life/p/12047418.html
Copyright © 2011-2022 走看看