• @EnableAsyn


    有时,我们需要在一个方法中完成方法内的逻辑后需要通知其他接口,但是不需要等其他接口返回结果就直接在当前方法中返回(比如用户支付完订单后需要及时给用户返回支付结果,同时需要通知商户:用户已完成支付),这时就需要异步调用(不用等待通知完商户才给用户返回支付结果)。

    1.在启动类上添加@EnableAsync注解,表示项目支持异步方法调用;

    2.在需要异步调用的方法上添加@Async注解,表示该方法为异步方法,即该方法和调用者不在一个线程中进行。

    示例代码:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.scheduling.annotation.EnableAsync;
    
    @SpringBootApplication
    @EnableAsync
    public class AsyncDemoApplication {
    
        /**
         * 异步方法
         *
         * @throws InterruptedException
         */
        @Async
        public void asyncMethod() throws InterruptedException {
            for (int i = 1; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + "********" + i);
            }
        }
    
        public static void main(String[] args) {
    
            try {
                //获取上下文
                ConfigurableApplicationContext context = SpringApplication.run(AsyncDemoApplication.class, args);
    
                //获取对象bean,进而调用异步方法
                context.getBean(AsyncDemoApplication.class).asyncMethod();
                for (int i = 0; i < 5; i++) {
                    System.out.println(Thread.currentThread().getName() + "********" + i);
                    if (2 == i)
                        Thread.sleep(1000l);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    软件工程个人作业01
    个人冲刺——(五)
    个人冲刺——(四)
    个人冲刺——(三)
    个人冲刺——(二)
    个人冲刺——(一)
    单词统计
    第十周学习总结
    第九周学习总结
    用户模板场景分析
  • 原文地址:https://www.cnblogs.com/wcss/p/12613010.html
Copyright © 2020-2023  润新知