1

に裏打ちされてきたのTaskExecutorとTaskScheduler私は、次のようTaskSchedulerとのTaskExecutorのための豆午前:春 - 同じスレッドプール

@Bean 
public TaskScheduler taskScheduler() { 
    ThreadPoolTaskScheduler s = new ThreadPoolTaskScheduler(); 

    s.setThreadNamePrefix("Task-Scheduler-"); 
    s.setPoolSize(10); 
    s.setRemoveOnCancelPolicy(true); 

    return s; 
} 

@Bean 
public TaskExecutor taskExecutor() { 
    ThreadPoolTaskExecutor e = new ThreadPoolTaskExecutor(); 

    e.setThreadNamePrefix("Task-Executor-"); 
    e.setMaxPoolSize(10); 
    e.setCorePoolSize(10); 

    return e; 
} 

はのTaskExecutorとTaskScheduler間の基本的なスレッドプールエグゼキュータのサービスを共有することが可能です?今私は、固定されたスレッド10個ごとに2倍のプールを持っていますが、私は20個のスレッドで1つのプールを持っていたいと思います。

これらのプールは@Async、@ Scheduledおよび@Retryアノテーションに使用されます。

答えて

1

内部プールに依存する実装なので、これらの2つのクラスを使用してこれを行うことはできません。

ただし、共有ThreadPoolを使用する独自のTaskExecutorおよびTaskSchedulerクラスを実装できます。

いくつかのアイドルスレッドはパフォーマンスに大きな影響を与えませんので、2つのプールを持つことがパフォーマンス上のボトルネックとなることがわかっていない限り、私は時間を無駄にしません。

関連する問題