-
何為異步調(diào)用并徘?
在解釋異步調(diào)用之前遣钳,我們先來看同步調(diào)用的定義;同步就是整個(gè)處理過程順序執(zhí)行麦乞,當(dāng)各個(gè)過程都執(zhí)行完畢蕴茴,并返回結(jié)果。 異步調(diào)用則是只是發(fā)送了調(diào)用的指令姐直,調(diào)用者無需等待被調(diào)用的方法完全執(zhí)行完畢倦淀;而是繼續(xù)執(zhí)行下面的流程。例如声畏, 在某個(gè)調(diào)用中撞叽,需要順序調(diào)用 A, B, C三個(gè)過程方法;如他們都是同步調(diào)用插龄,則需要將他們都順序執(zhí)行完畢之后愿棋,方算作過程執(zhí)行完畢; 如B為一個(gè)異步的調(diào)用方法均牢,則在執(zhí)行完A之后糠雨,調(diào)用B,并不等待B完成膨处,而是執(zhí)行開始調(diào)用C见秤,待C執(zhí)行完畢之后,就意味著這個(gè)過程執(zhí)行完畢了真椿。
-
常規(guī)的異步調(diào)用處理方式
在Java中鹃答,一般在處理類似的場景之時(shí),都是基于創(chuàng)建獨(dú)立的線程去完成相應(yīng)的異步調(diào)用邏輯突硝,通過主線程和不同的線程之間的執(zhí)行流程测摔,從而在啟動(dòng)獨(dú)立的線程之后,主線程繼續(xù)執(zhí)行而不會(huì)產(chǎn)生停滯等待的情況解恰。
-
@Async介紹
在Spring中锋八,基于@Async標(biāo)注的方法,稱之為異步方法护盈;這些方法將在執(zhí)行的時(shí)候挟纱,將會(huì)在獨(dú)立的線程中被執(zhí)行,調(diào)用者無需等待它的完成腐宋,即可繼續(xù)其他的操作紊服。
該項(xiàng)目中登錄時(shí)記錄登錄日志就可以異步調(diào)用了檀轨。
1、如何在Spring中啟用@Async
基于Java配置的啟用方式:
@Configuration
@EnableAsync
public class SpringAsyncConfig { ... }
基于XML配置文件的啟用方式欺嗤,配置如下:
<task:executor id="myexecutor" pool-size="5" />
<task:annotation-driven executor="myexecutor"/>
2参萄、異步新增登錄日志
@Service
@Configuration
@EnableAsync
public class SysLoginService {
@Autowired
private SysUserLoginDao sysUserLoginDao;
/**
* 登錄時(shí)新增登錄信息,異步處理
*
* @param sysUserLogin
* @return
*/
@Async
public void add(SysUserLogin sysUserLogin) {
sysUserLoginDao.add(sysUserLogin);
}
}
這里要掌握的就是一定要加上@Configuration @EnableAsync
這兩個(gè)注解,不然單單加@Async是不起作用的煎饼。