@Scheduled 任務調度註解,主要用於配置定時任務;springboot默認的調度器線程池大小為 1。
註意:在spring中的@schedule默認的線程池中只有壹個線程,所以如果在多個方法上加上@schedule的話,此時就會有多個任務加入到延時隊列中,因為只有壹個線程,所以任務只能被壹個壹個的執行
@Async 任務異步執行註解,主要用於方法上,表示當前方法會使用新線程異步執行;springboot默認執行器線程池大小為100。
此註解會將這個任務放入到壹個異步線程中執行,不會阻塞主線程,可以用在壹些比較耗時並且不用考慮返回值的壹些操作中
使用:
2.在定時任務上加上註解
可以看到控制臺輸出已經是異步執行了
總結
1 默認@schedule 線程池默認只有壹個線程,多個任務時串行 串行
2 默認@schedule + @Aysnc 多個任務之間串行,單個任務非阻塞異步執行 並行+異步