在Spring Boot中創建線程池有多種方式,以下是其中兩種常見的方式:
ThreadPoolTaskExecutor
:import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
@Component
public class ThreadPoolConfig {
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10); // 設置核心線程數
executor.setMaxPoolSize(20); // 設置最大線程數
executor.setQueueCapacity(100); // 設置隊列容量
executor.setThreadNamePrefix("MyThread-"); // 設置線程名稱前綴
executor.initialize();
return executor;
}
}
然后,您可以在Spring Boot應用程序的任何位置通過注入ThreadPoolTaskExecutor
來使用線程池:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
public void doSomething() {
taskExecutor.execute(() -> {
// 在此處執行需要異步處理的任務
});
}
}
@EnableAsync
注解:
首先,在您的Spring Boot應用程序的主配置類上添加@EnableAsync
注解:import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@Configuration
@EnableAsync
public class AppConfig {
}
然后,您可以使用@Async
注解在任何需要異步執行的方法上:
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Async
public void doSomething() {
// 在此處執行需要異步處理的任務
}
}
請注意,使用@Async
注解時,Spring Boot會自動創建一個默認的線程池來執行異步任務。如果您想要自定義線程池的配置,可以通過在Spring Boot的主配置類上添加@EnableAsync
注解,并在同一類中定義TaskExecutor
bean來實現。