美文网首页
异步调用@Async

异步调用@Async

作者: 轻易流逝 | 来源:发表于2018-12-20 15:42 被阅读0次

    1、在spring boot的启动类上标注@EnableAsync(扫描到就行)
    2、在需要异步执行的方法上标注@Async
    简单两步完成异步调用

    一、异步方法也可以有返回值:

        @Async
        public Future<String> asyncRetStr(){
            return new AsyncResult<String>("async run success!");
        }
    

    二、静态方法上的@Async会失效
    三、异步方法上标注的@Transactional也会失效
    四、异步执行中的异常在ExceptionHandlerHandlerExceptionResolver中是无法处理的,我们可以通过下面的方式统一处理异步执行中的异常
    五、我们可以为异步执行配置自定义的Executor

    public class AsyncConf implements AsyncConfigurer {
    
        @Override
        public Executor getAsyncExecutor() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(5);
            executor.setMaxPoolSize(10);
            executor.setQueueCapacity(25);
            executor.initialize();
            return executor;
        }
    
        @Override
        public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
            return new AsyncUncaughtExceptionHandler() {
                
                @Override
                public void handleUncaughtException(Throwable ex, Method method, Object... params) {
                    //这个地方可以处理异步执行中的异常
                }
            };
        }
    }
    

    相关文章

      网友评论

          本文标题:异步调用@Async

          本文链接:https://www.haomeiwen.com/subject/qouykqtx.html