• spring 使用异步任务


    1.说明

    在springboot 中使用 @Async 实现异步任务处理,下面介绍一下如何实现这个。

    2.实现代码

    2.1 增加@EnableAsync

    
    @EnableAsync
    public class Demo1Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Demo1Application.class, args);
        }
    
    }
    

    2.2 构造一个线程池

    实现异步时,我们需要手工构造一个线程池,否则会出现内存泄漏的问题。

    
    @Configuration
    public class AsyncThreadPoolConfig {
    
        private static final int MAX_POOL_SIZE = 20;
        private static final int CORE_POOL_SIZE = 10;
        private static final int TASK_NUM = 200;
        private static final int ACTIVE_TIME = 60;
    
        @Bean("myExecutor")
        public AsyncTaskExecutor asyncTaskExecutor() {
            ThreadPoolTaskExecutor asyncTaskExecutor = new ThreadPoolTaskExecutor();
            asyncTaskExecutor.setMaxPoolSize(MAX_POOL_SIZE);
            asyncTaskExecutor.setCorePoolSize(CORE_POOL_SIZE);
            asyncTaskExecutor.setQueueCapacity(TASK_NUM);
            asyncTaskExecutor.setKeepAliveSeconds(ACTIVE_TIME);
            asyncTaskExecutor.setThreadNamePrefix("laozhang_");
            asyncTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
            asyncTaskExecutor.initialize();
            return asyncTaskExecutor;
        }
    
    }
    
    

    2.3 使用注解

    @Component
    public class AsyncTest {
    
        @Async(value = "myExecutor")
        public  void longTime() throws InterruptedException {
            System.err.println("----------------start----------------");
            Thread.sleep(5000);
            System.err.println("----------------end----------------");
        }
    }
    
    

    增加一个@Async注解,表示这个方法会使用异步处理

  • 相关阅读:
    实现预定房间的功能
    实现投票,显示人数百分比的功能
    数据库包装成类
    实现微信好友列表的php代码
    几种常见的函数
    数据库查询
    用代码编辑数据库T-SQL语句
    多线程
    集合类
    一、高级查询。。。实例
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/16268722.html
Copyright © 2020-2023  润新知