目录
Spring3开始提供了@Async
注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。在项目应用中,@Async
调用线程池,推荐使用自定义线程池的模式。@Async
注解使用系统默认或者自定义的线程池(代替默认线程池),可在项目中设置多个线程池,在异步调用时,指明需要调用的线程池名称,如@Async("new_task")。
自定义线程池常用方案:重新实现接口AsyncConfigurer。
同步调用和异步调用
同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行。异步调用指程序在顺序执行时,调用者无需等待被调用的方法完全执行完毕就执行后面的程序。
同步调用
定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内)
@Component
public class Task {
public