zoukankan      html  css  js  c++  java
  • spring启动异步线程

     大纲:

    1. spring启动异步线程
    2. spring配置线程池

    一、spring启动异步线程

    spring启动异步线程方法就是在方法上加上注解@Async,然后启动类或配置类上加上注解@EnableAsync

    @Service
    public class TestService {
        @Async
        public Future exec(){
            Future future = new AsyncResult("dududududu");
            System.out.println(Thread.currentThread().getName()+111111);
            return future;
        }
    }

    这种方式在每次执行这个方法的时候都会启动一个线程去执行这个方法。Future可以返回执行结果,这个方法也可以返回void。

    二、spring配置线程池

    @Configuration
    @EnableAsync
    public class Config {
        @Bean
        public Executor taskExecutor() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(2);
            executor.setMaxPoolSize(3);
            executor.setQueueCapacity(200);
            executor.setKeepAliveSeconds(60);
            executor.setThreadNamePrefix("aaaaaa-");
            executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
            return executor;
        }
    
        @Bean
        public Executor taskExecutor1() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(2);
            executor.setMaxPoolSize(3);
            executor.setQueueCapacity(200);
            executor.setKeepAliveSeconds(60);
            executor.setThreadNamePrefix("bbbbbbb-");
            executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
            return executor;
        }
    }

    上面的配置文件配置了2个线程池

    应用的时候在@Async的值里配置上线程池的名称就可以了

    @Service
    public class TestService {
        @Async("taskExecutor1")//使用上面配置的taskExecutor1线程池
        public Future exec(){
            Future future = new AsyncResult("dududududu");
            System.out.println(Thread.currentThread().getName()+111111);
            return future;
        }
    }
  • 相关阅读:
    提取多层嵌套Json数据
    Jquery 使用Ajax获取后台返回的Json数据后,页面处理
    Jquery购物车jsorder改进版,支持后台处理程序直接转换成DataTable处理
    长连接和短连接
    JAVA8新特性
    线程、进程与程序+并行与并发
    订单号生成规则
    散列表解决冲突的方式
    125.Valid Palindrome
    128.Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/11584016.html
Copyright © 2011-2022 走看看