基本的には、私はQuartz Schedulerの実装を使用しています。同時に複数のジョブを実行したいが、いくつかは他のタスクの前に実行する必要があります。このために、私はトリガのパラメータ "優先度"を見つけました。クォーツスケジューラのトリガは優先度を尊重しません
だから私は4つのジョブがあり、それぞれに独自のトリガーがあります。 - 優先順位5 JOB2 - 優先順位3 JOB3 - 優先順位11 JOB4 - JOB1優先8
私は彼らがこの順序で実行することにしたい:私はこのような優先順位を設定JOB3、JOB4、仕事をし、 1、job2
20回の実行のうち、約3回だけ期待される結果が得られます。他の人にとって、実行される最初のタスクは非常にランダムであり、残りは正しく順序付けられます。 JOB1、JOB3、JOB4、JOB2 OR JOB4、JOB3、JOB1、JOB2
アム私は優先順位がクォーツでどのように機能するかを正しく理解していない:一つの実行は次のようになるでしょうか?私は起こっていることを正確に見つけることができません。
あなたのスレッドプールのサイズは?利用可能なスレッドより多くのタスクが実行されている状況に実行しますか?すべてのジョブが同じスケジュールされた時間を持っていて、クォーツがスレッドを実行するためにフリースレッドを持っていない場合、すべての優先順位がキックされますか。 – Srinivas
スレッドプールサイズは1ですこの例のようにhttp://www.quartz-scheduler.org/documentation/quartz-2.x/examples/Example14.html私は優先度に基づいてタスクを実行する必要があります。 – Mocktheduck
2つのこと。 1)あなたの仕事はどのように予定されていますか?あなたはすべての仕事のために同じcronを持っていて、同時に発射することを期待していますか?あるいはintervalWithDelayのようなものを複数回実行するようにしますか? 2)あなたの仕事のためにNextFireTimeを見ると、より多くの洞察を与えるかもしれません。優先順位は、すべてのジョブが同時に発生するようスケジュールされている場合にのみ表示されます。彼らの発射時間が異なる場合、最も古くスケジュールされたToFire時間を持つ仕事は、彼らが同じNextFireTimeを持っていたことを確認することができる – Srinivas