Spring Bootの高スレッドコンカレンシーの調整方法
Spring Bootで高並行スレッドプールを設定するには、application.properties やapplication.yml ファイルを変更します。
まずは、設定するスレッドプールのサイズやその他関連する属性を決める必要があります。一般的なスレッドプール属性には、以下が含まれます。
- corePoolSize: 常にスレッドプール内に維持するスレッドの数である、コアスレッドの数。
- 最大スレッド数: スレッドプールが許容する最大スレッド数を示します。
- キュー容量:スレッドプールのスレッド数がコア・スレッド数に達すると、追加のタスクは実行待ちのキューに入れられます。
- アイドル中のスレッドが一定時間利用されないと徐々に破棄される時間
- threadNamePrefix: スレッド名を区別するために使用する、スレッド名のプレフィックス。
- 新しいタスクの処理ができなくなった際、スレッドプールとキューの両方が飽和状態の時にタスクを処理する方法を指定します。
アプリケーションのプロパティ ファイルで以下のような設定を追加する。
# 线程池配置
spring.task.execution.pool.core-size=10
spring.task.execution.pool.max-size=100
spring.task.execution.pool.queue-capacity=1000
spring.task.execution.pool.keep-alive=30s
spring.task.execution.pool.thread-name-prefix=myThreadPool-
spring.task.execution.pool.rejection-policy=CALLER_RUNS
あるいは、application.ymlで次の設定を追加します。
# 线程池配置
spring:
task:
execution:
pool:
core-size: 10
max-size: 100
queue-capacity: 1000
keep-alive: 30s
thread-name-prefix: myThreadPool-
rejection-policy: CALLER_RUNS
上記設定により、Spring Boot はタスク処理に使用するための高並列スレッドプールを自動的に作成します。