もう少し調査したところ、私はJobLauncherのTaskExecuterを構成できることが分かった。次に、SimpleAsyncTaskExectorを使用してデーモンとして設定し、スレッドの優先度を設定できます。
@Bean
public JobLauncher jobLauncher(final JobRepository jobRepository, final TaskExecutor taskExecutor) {
final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository);
jobLauncher.setTaskExecutor(taskExecutor);
return jobLauncher;
}
@Bean
public TaskExecutor taskExecutor() {
SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
taskExecutor.setDaemon(true);
taskExecutor.setThreadPriority(Thread.MIN_PRIORITY);
return taskExecutor;
}
Spring Scheduler(https://spring.io/guides/gs/scheduling-tasks/)を使用してタスクをスケジュールすることができます。リソース消費に関しては、それに影響する多くの要素があります。さらに悪いケースは、メモリが相対的に安価である(つまり、どこかでホストされている場合)必要に応じて、より多くのメモリを購入することだけです。 – SL07
私はSpring Schedulerを使うことができますが、Spring Schedulerがスレッド優先度の低いスレッドのようなデーモンを実際に作成するのは100%ではありません。これを検証する方法はありますか?また、私の特定のユースケースでは、ジョブは実際には1回だけ実行する必要があり、それ自体を繰り返すようにスケジュールするべきではありません。 – Tranquilized
Spring Schedulerがloスレッド優先度で動作することを検証できません。それが一度だけ実行されるジョブであれば、そのスクリプトを書くほうが簡単かもしれません。 Springアプリケーションを使用して、必要な条件に基づいてそのスクリプトを実行できます。 – SL07