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自動生成,僅供參考