springboot中如何使用執行緒池

红尘沙漏發表於2024-09-19

springboot中如何使用執行緒池
springboot中如何使用執行緒池

在Spring Boot中使用執行緒池,你可以定義一個ThreadPoolTaskExecutor的Bean,然後在需要的地方使用@Autowired注入這個Bean。

以下是一個配置執行緒池的例子:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
 
@Configuration
@EnableAsync
public class AsyncConfig {
 
    @Bean(name = "threadPoolTaskExecutor")
    public Executor threadPoolTaskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(10); // 核心執行緒數
        executor.setMaxPoolSize(20); // 最大執行緒數
        executor.setQueueCapacity(500); // 佇列容量
        executor.setKeepAliveSeconds(60); // 執行緒空閒時間
        executor.setThreadNamePrefix("MyThreadPoolTaskExecutor-"); // 執行緒名字首
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 拒絕策略
        executor.initialize();
        return executor;
    }
}

  使用執行緒池執行非同步任務的例子:

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
 
@Service
public class AsyncService {
 
    @Async("threadPoolTaskExecutor")
    public void executeAsyncTask() {
        // 非同步執行的任務內容
    }
}

  

在這個例子中,我們定義了一個名為threadPoolTaskExecutor的執行緒池Bean,並在AsyncService中的executeAsyncTask方法上使用@Async("threadPoolTaskExecutor")註解來指定使用這個執行緒池來非同步執行任務。

提示:AI自動生成,僅供參考

相關文章