1. TaskExecutor
Spring異步線程池的接口類,其實質是java.util.concurrent.Executor
Spring 已經實作的異常線程池:
SimpleAsyncTaskExecutor:不是真的線程池,這個類不重用線程,每次調用都會建立一個新的線程。
SyncTaskExecutor:這個類沒有實作異步調用,隻是一個同步操作。隻适用于不需要多線程的地方
ConcurrentTaskExecutor:Executor的适配類,不推薦使用。如果ThreadPoolTaskExecutor不滿足要求時,才用考慮使用這個類
SimpleThreadPoolTaskExecutor:是Quartz的SimpleThreadPool的類。線程池同時被quartz和非quartz使用,才需要使用此類
ThreadPoolTaskExecutor :最常使用,推薦。 其實質是對java.util.concurrent.ThreadPoolExecutor的包裝
2. @Async
spring對過@Async定義異步任務
異步的方法有3種
最簡單的異步調用,傳回值為void
帶參數的異步調用 異步方法可以傳入參數
異常調用傳回Future