建立一個執行緒池配置類 ThreadPoolConfig

我的心儿發表於2024-03-19

在 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 中使用這個執行緒池來執行任務。透過配置合適的執行緒池引數,可以更好地控制多執行緒任務的執行。在實際應用中,可以根據具體需求來調整執行緒池的配置引數。

相關文章