ように私は自分のアプリケーションのコンテキストごとなど@BeanとしてThreadPoolTaskExecutorを宣言している:私はThreadPoolTaskExecutorのインスタンスを有線得る必要がある2つの異なるサービスを持つシングルトンのThreadPoolTaskExecutorを異なるサービスで共有する必要がありますか?
@Configuration
@ConfigurationProperties(prefix = "application")
@EnableCaching
public class ApplicationConfig {
private static final int POOL_SIZE = 2;
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();
pool.setCorePoolSize(POOL_SIZE);
return pool;
}
}
。各サービスは、サービス固有のジョブを実行するRunnableを送信します。
@Service
public class TerminatedContractsService {
@Autowired
private ThreadPoolTaskExecutor taskExec;
public void notifyTerminatedContracts(Date d) {
// do some contract specific work
taskExec.submit(() -> System.out.println("emailing terminated contracts..."));
}
}
@Service
public class SalaryCalculationService {
@Autowired
private ThreadPoolTaskExecutor taskExec;
public void calculateSalary(Date d) {
// do some salary related work
taskExec.submit(() -> System.out.println("calculating salaries..."));
}
}
は、右両方のサービスに同じThreadPoolTaskExecutorインスタンスを(そのシングルトン以降)を共有するのが安全であるべきです:
は例えば、これらは2つのサービスですか?
代わりにプロトタイプを作成する必要がありますか?
パフォーマンスの結果を指摘してくれてありがとう。 –