• springboot异步处理请求 带返回值的情况


    package yinhu.yinhu.controller;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.scheduling.annotation.EnableAsync;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import yinhu.yinhu.yh.vo.AsyncTest;
    
    @Controller
    @EnableAsync
    public class AsyncController {
        @Autowired
        private AsyncTest asyncTest;
        @ResponseBody
        @GetMapping
        @RequestMapping(value="/async")
        public String test() {
            Future<String> future=asyncTest.mywait();
            String s = null;
            try {
                 s=future.get();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ExecutionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("wait");
            return s;
        }
    
    }
    package yinhu.yinhu.yh.vo;
    
    import java.util.concurrent.Future;
    
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.scheduling.annotation.AsyncResult;
    import org.springframework.stereotype.Component;
    
    @Component
    public class AsyncTest {
        @Async
        public Future<String> mywait() {
            System.out.println("------------------oh no");
            Future<String> returnmsg;
            try {
                Thread.sleep(1000*10);
                
                System.out.println("线程名字"+Thread.currentThread().getName());
                returnmsg=new AsyncResult<String>("sucess");//没异常就返回这个
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                returnmsg=new AsyncResult<String>("异常为"+e.getMessage());
            }
            System.out.println("------------------oh yes");
            return returnmsg;
        }
    }
  • 相关阅读:
    SpringMVC的下载
    上传的前台实现
    SpringMVC自定义视图解析器的使用
    SpringMVC的Model对象的使用
    SpringMVC中使用作用域对象完成数据的流转
    SpringMVC的响应介绍
    SpringMVC的静态资源放行配置
    SpringMVC的静态资源放行
    SpringMVC的编码过滤器配置
    pymysql
  • 原文地址:https://www.cnblogs.com/qinyios/p/12551652.html
Copyright © 2020-2023  润新知