zoukankan      html  css  js  c++  java
  • 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注解

  • 相关阅读:
    hdu5728 PowMod
    CF1156E Special Segments of Permutation
    CF1182E Product Oriented Recurrence
    CF1082E Increasing Frequency
    CF623B Array GCD
    CF1168B Good Triple
    CF1175E Minimal Segment Cover
    php 正则
    windows 下安装composer
    windows apache "The requested operation has failed" 启动失败
  • 原文地址:https://www.cnblogs.com/qinyios/p/12551498.html
Copyright © 2011-2022 走看看