Spring Bootでスレッドプールを作成する方法を教えてください。
Spring Boot でスレッドプールを作成する方法がいくつかあり、ここでは一般的な2つの方法を紹介します。
- スレッドプールタスク実行
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;
}
}
そして、スレッドプールは ThreadPoolTaskExecutor をインジェクションすることで、Spring Boot アプリケーションの任意の位置から使用できるようになります。
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のネイティブな日本語のパラフレーズは次のとおりです。* 非同期処理を有効化する
- 非同期処理有効
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が非同期タスクを実行するためのデフォルトのThreadPoolを自動的に作成します。ThreadPoolの設定をカスタマイズしたい場合は、Spring Bootのメイン設定クラスに@EnableAsyncアノテーションを追加し、同じクラスにTaskExecutor Beanを定義します。