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注解

  • 相关阅读:
    环境搭建:Vue环境搭建和项目初始化(windows)
    文件扩展关联命令
    关闭任务栏上右键的打开历史记录
    CDN基本原理和功能浅析
    制作支持UEFI启动的原装系统安装盘
    文件被占用如何查看
    BIOS和CMOS的区别
    PKI公钥基础设施简介
    网络安全通信https工作原理
    常见加密算法简介
  • 原文地址:https://www.cnblogs.com/qinyios/p/12551498.html
Copyright © 2011-2022 走看看