0

Spring 3 Scheduling and Thread Pooling フレームワークを使用しています。さまざまな時間/間隔でさまざまなタスクをスケジュールしたいと考えています。別のタスクが開始される前に、各タスクを完了するまで実行したい。

IE task1 と task2 がある場合: task1 は 10 分ごとに実行され、実行に 1 分かかります。 task2 は 1 日に 1 回実行され、実行に 5 分かかります。

task1 と task2 のタイマーが同時に起動する場合、task1 と task2 をキューに入れ、一度に 1 つのタスクだけをオフにする必要があります。

Spring ThreadPoolTask​​Executor を使用してこれをセットアップできることを知っています。

<task:executor id="executorWithPoolSizeRange"
               pool-size="5-10"
               queue-capacity="1"/>

ただし、そのエグゼキュータをスケジューラにフックする方法がわかりません。Spring ThreadPoolTask​​Scheduler を使用する場合、queueSize ではなく poolSize のみを設定できます

<task:scheduler id="scheduler" pool-size="10"/>

Spring エグゼキュータ サービスとスケジューラ サービスを一緒に使用して目標を達成する方法を知っている人はいますか?

4

1 に答える 1

1

次の 2 つの方法で実行できます。

task:annotation-driven1 つは、スケジューラと taskExecutor をタグの一部として明示的に指定することです。

<task:annotation-driven executor="executor" scheduler="scheduler"/>

または、スケジュールされたタスクの一部として、エグゼキューターに注入し、エグゼキューターに明示的に送信できます。

executor.execute(myrunnable/callable)
于 2012-10-30T19:50:31.310 に答える