私はSpring ThreadPoolTaskSchedulerを使用して、5分ごとに非同期メソッドを実行しています。場合によってはメソッドの実行に5分以上かかります。このようなシナリオで動作を観察しようとしましたが、現在の実行が完了するまで(たとえ5分間隔が終了しても)メソッドが再度実行されないようです。ThreadPoolSchedulerの間隔がタスクの実行時間より短い
これは私が達成したいものをスーツが、2番目のスレッドが5分以上を取っているものと並行してメソッドを実行するために、5分後に生み出されていない理由を私は疑問に思ってますが。最初は、デフォルトでプールサイズが1であると考えました。しかし、プールのサイズを大きくしても、動作は変わりません。
私は、ThreadPoolSchedulerコードを詳しく調べようとしましたが、内部的にはThreadPoolExecutor経由でタスクを実行しているようです。インターバルが経過しても、実行を完了するのを待つスレッドが1つだけ実行されるように設計されていますか?
<task:scheduler id="scheduler" pool-size="1" />
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
executeThis(); // this takes more than 5 minutes sometime
}
}, 5*60*1000);
よろしく、
Tushar
、私は試してみて、プールのサイズを増やすが、それは動作に影響を与えるようには見えませんでした。 – Tushar