• springboot异步处理请求 结合自定义线程池


    package yinhu.yinhu.controller;
    
    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() {
            asyncTest.mywait();
            System.out.println("wait");
            return "ok";
        }
    
    }
    package yinhu.yinhu.yh.vo;
    
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.stereotype.Component;
    
    @Component
    public class AsyncTest {
        @Async("taskExecutor")//自己配置的自定义线程池的名字(也就是带bean的方法名);也可以不要,不要的话就只能用框架自带的线程池
        public void mywait() {
            System.out.println("------------------oh no");
            // TODO Auto-generated method stub
            try {
                Thread.sleep(1000*10);
                System.out.println("线程名字"+Thread.currentThread().getName());
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("------------------oh yes");
        }
    }
    package yinhu.yinhu.yh.config;
    
    import java.util.concurrent.Executor;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
    
    @Configuration
    public class MyAsyncTaskThreadPool {
        private int poolsize=10;
        private int maxpoolsize=200;
        private int queueCapacity=10;
        
        @Bean
        public Executor taskExecutor() {
            ThreadPoolTaskExecutor threadPoolTaskExecutor=new ThreadPoolTaskExecutor();
            threadPoolTaskExecutor.setCorePoolSize(poolsize);
            threadPoolTaskExecutor.setMaxPoolSize(maxpoolsize);
            threadPoolTaskExecutor.setQueueCapacity(queueCapacity);
            threadPoolTaskExecutor.setThreadNamePrefix("线程前缀名字");
            threadPoolTaskExecutor.initialize();
            return threadPoolTaskExecutor;
        }
        
    }

    springboot异步处理请求并响应的方式
    controller加@EnableAsync注解
    组件类(如)中的方法上方加@Async注解

  • 相关阅读:
    求求你,快去学习吧!!
    研究生英语读写译----topic3
    SQL----where 和 on 的区别
    SQL----语句执行顺序
    SQL----Inner Join、 Outer Join、Cross Join理解
    将一般的数值转换为金额格式(分隔千分位和自动增加小数点)
    伪元素 before 和 after 各种妙用
    抽空笑一笑
    别笑抽咯
    JavaScript继承方式详解
  • 原文地址:https://www.cnblogs.com/qinyios/p/12551498.html
Copyright © 2020-2023  润新知