1、@Async失效場(chǎng)景
一、異步方法使用static修飾
二、異步類(lèi)沒(méi)有使用@Component注解(或其他注解)導(dǎo)致spring無(wú)法掃描到異步類(lèi)
三、異步方法不能與異步方法在同一個(gè)類(lèi)中
四、類(lèi)中需要使用@Autowired或@Resource等注解自動(dòng)注入,不能自己手動(dòng)new對(duì)象
五、如果使用SpringBoot框架必須在啟動(dòng)類(lèi)中增加@EnableAsync注解
六、在Async 方法上標(biāo)注@Transactional是沒(méi)用的。 在Async 方法調(diào)用的方法上標(biāo)注@Transactional 有效。
七、調(diào)用被@Async標(biāo)記的方法的調(diào)用者不能和被調(diào)用的方法在同一類(lèi)中不然不會(huì)起作用!。。。。。
八、使用@Async時(shí)要求是不能有返回值的不然會(huì)報(bào)錯(cuò)的 因?yàn)楫惒揭笫遣魂P(guān)心結(jié)果的
2、代碼案例
我們?cè)谑褂枚嗑程的時(shí)候,往往需要?jiǎng)?chuàng)建Thread類(lèi),或者實(shí)現(xiàn)Runnable接口,如果要使用到線程池,我們還需要來(lái)創(chuàng)建Executors。
在使用spring中,已經(jīng)給我們做了很好的支持。只需要添加 @EnableAsync 就可以使用多線程。使用 @Async 就可以定義一個(gè)線程任務(wù)。通過(guò)spring給我們提供的ThreadPoolTaskExecutor就可以使用線程池。
默認(rèn)情況下,Spring將搜索相關(guān)的線程池定義:要么在上下文中搜索唯一的TaskExecutor bean,要么搜索名為“taskExecutor”的Executor bean。如果兩者都無(wú)法解析,則將使用SimpleAsyncTaskExecutor來(lái)處理異步方法調(diào)用。
3、異步方法各參數(shù)的詳細(xì)說(shuō)明
還可以看看
其他文章,謝謝您的閱讀。
網(wǎng)站申明:系本文編輯轉(zhuǎn)載,來(lái)源于網(wǎng)絡(luò),目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),所有權(quán)歸屬原作者。如內(nèi)容、圖片有任何版權(quán)問(wèn)題,請(qǐng)
聯(lián)系我們刪除。