SpringBoot 异步任务

本文介绍了SpringBoot中如何使用异步任务提高程序效率。通过@EnableAsync和@Async注解,可以开启并实现异步执行。示例展示了在添加@Async注解前后,程序执行顺序的变化,强调了异步任务能够避免阻塞主线程,提升响应速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异步任务(注解)

        个人理解:同步(Synchronous)和异步的区别,同步:按顺序从上到下执行程序,如在同步方法中调用一个方法,调用者必须等待该方法执行完成,才能继续执行后续方法。异步:可以不用按顺序执行程序,如在异步方法中调用一个方法,调用者无需等待该方法执行完成,就可以继续执行后续方法,立即返回,而再回头执行该调用方法。相当于开一个线程给该方法自己执行。

SpringBoot中开启异步任务需要两个注解@EnableAysnc、@Aysnc。(1)在程序上加上@EnableAysnc,表示开启异步任务。(2)在要执行异步任何的方法加上@Aysnc,系统会开启一个线程去执行该方法。

1,例子说明:

controller类

@RestController
public class Cba {
    @Autowired
    private Sync sync;
    @GetMapping("/ios")
    public String page(){
        sync.symethod();//整个方法后执行
        System.out.println("我是先执行的");
        return  "执行2";
    }
}

service类(+@Async)

@Service
@EnableAsync //开启异步任务,一般放在启动程序上
public class Sync {
    @Async
    public void symethod(){
        System.out.println("prefix");
        try{
            Thread.sleep(5000);
        }catch (Exception e){
        }
        System.out.println("异步进程睡3s");
    }
}

2,测试结果:

加@Async前输出:

  • prefix
  • 异步进程睡3s
  • 我是先执行的
  • 页面上一直在等待着相应,3秒后才输出“执行2”

加@Async后输出:

  • 我是先执行的
  • prefix
  • 异步进程睡3s
  • 页面上一直立刻输出“执行2”,

 

       总结:从上面结果分析,当要立刻返回“执行2”字符串给页面的时候,如果没有加@Async,是需要等待3秒的,即按顺序执行,等symethod()方法执行完毕后才可以返回,这就是同步执行。当给调用的方法加上@Async注解后,那么该方法就不会从上到下顺序同步的执行,会执行没有@Async的方法,最后再执行有@Async的方法,这就是异步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值