日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

spring boot 異步async

作者:郭俊強 更新時間: 2023-07-16 編程語言
#### 步驟1:配置線程池
```
@Configuration
@EnableAsync
public class SyncConfiguration {
    @Bean("setOrderInfo")
    public ThreadPoolTaskExecutor getScorePoolTaskExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        //核心線程數
        taskExecutor.setCorePoolSize(10);
        //線程池維護線程的最大數量,只有在緩沖隊列滿了之后才會申請超過核心線程數的線程
        taskExecutor.setMaxPoolSize(100);
        //緩存隊列
        taskExecutor.setQueueCapacity(50);
        //許的空閑時間,當超過了核心線程出之外的線程在空閑時間到達之后會被銷毀
        taskExecutor.setKeepAliveSeconds(200);
        //異步方法內部線程名稱
        taskExecutor.setThreadNamePrefix("score-");
        /**
         * 當線程池的任務緩存隊列已滿并且線程池中的線程數目達到maximumPoolSize,如果還有任務到來就會采取任務拒絕策略
         * 通常有以下四種策略:
         * ThreadPoolExecutor.AbortPolicy:丟棄任務并拋出RejectedExecutionException異常。
         * ThreadPoolExecutor.DiscardPolicy:也是丟棄任務,但是不拋出異常。
         * ThreadPoolExecutor.DiscardOldestPolicy:丟棄隊列最前面的任務,然后重新嘗試執行任務(重復此過程)
         * ThreadPoolExecutor.CallerRunsPolicy:重試添加當前的任務,自動重復調用 execute() 方法,直到成功
         */
        taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        taskExecutor.initialize();
        return taskExecutor;
    }
}
#### 步驟2: 為@Async指定線程池名字
@Slf4j
@Service
public class Services {
    @Async("setOrderInfo")  //線程池中bean的name值
    public void setOrderInfoMsg(){
        try {
            Thread.sleep(5000);
            log.info("處理訂單");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
@RestController
@Slf4j
public class Controll {
    @Autowired
    private Services services;
    @RequestMapping("/hello")
    public String getInfo(){
        this.services.setOrderInfoMsg();
        return "hello";
    }

}

異步寫法很簡單 :

? ? ? ? 1、線程池設置

? ? ? ? 2、阻塞線程的方法上加@Async(指定線程名)

? ? ? ? 3、調用阻塞線程的方法即可
? ? ? ?

1.注解的方法必須是public方法。
2.方法一定要從另一個類中調用,也就是從類的外部調用,類的內部調用是無效的。

原文鏈接:https://blog.csdn.net/qq_37061571/article/details/122016478

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新