在 Spring Boot 專案中配置多執行緒可以透過建立一個執行緒池的配置類來實現。下面是一個簡單的多執行緒配置示例:
建立一個執行緒池配置類 ThreadPoolConfig:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5); // 核心執行緒數
executor.setMaxPoolSize(10); // 最大執行緒數
executor.setQueueCapacity(20); // 等待佇列容量
executor.setThreadNamePrefix("MyThread-"); // 執行緒名字首
executor.initialize();
return executor;
}
}
在需要使用多執行緒的地方注入執行緒池並使用:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
@Service
public class MyService {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
public void executeTask() {
taskExecutor.execute(() -> {
// 在多執行緒中執行的任務
System.out.println("Task executed in thread: " + Thread.currentThread().getName());
});
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Service
public class MyService {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
@Async
public void executeTask() {
taskExecutor.execute(() -> {
// 在多執行緒中執行的任務
System.out.println("Task executed in thread: " + Thread.currentThread().getName());
});
}
}
在上面的示例中,我們透過配置一個執行緒池的 ThreadPoolTaskExecutor bean,並在 MyService 中使用這個執行緒池來執行任務。透過配置合適的執行緒池引數,可以更好地控制多執行緒任務的執行。在實際應用中,可以根據具體需求來調整執行緒池的配置引數。