3

少し問題があります(Springバージョン3.1.1を使用しています)。1日でタスクを実行するプロセスまたはスレッドを開始したい。

たとえば、ユーザーのリストがあり、すべてのユーザーの合計日数がフィールドとしてあります。

class User {String ... String ... DateTime countDays = ... 12-12-12 ...}

だから私がやりたいのは、アプリケーションを起動する(実行中)ときに、毎日タスクを実行したいということです。ユーザーのリストをループします。countDaysを確認します。たとえば、countDaysが14より大きい場合は、ユーザーに何かを送信します。 。

ループして何かを送信する方法を知っています。オブジェクトを開始して、1日に1つのタスクを実行させる方法がわかりません。Beanを作成し、それを構築して、スリープ機能を使用しますか????

誰かが私を助けてくれることを願っています、ありがとう!:D

4

3 に答える 3

5

次のような @Scheduled アノテーションを使用することもできます。

@Scheduled(cron="0 0 * * *")
public void doStuff() {
   ..
}

ここでデキュメンテーションを確認してください。それを行うにはさまざまな方法があります

于 2012-12-12T13:59:47.410 に答える
4

Spring は Quartz スケジューラーを非常によくサポートしています...

http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html

CRON トリガー Bean を使用して、タスクを 1 日に 1 回 (たとえば、深夜に) 実行するように設定できます。

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="usersJob" />
    <property name="cronExpression" value="0 0 * * *" />
</bean>
于 2012-12-12T13:42:05.723 に答える
1

Spring のTaskSchedulerおよびTriggerインターフェースを利用します。TaskScheduler はタスク (Runnable オブジェクト) の実行をスケジュールする役割を担い、Trigger は実行時間を決定する役割を担います。

あなたの場合、 TaskScheduler のThreadPoolTask​​Scheduler実装で十分です。java.util.concurrent.ThreadPoolExecutor を TaskScheduler として採用しています。

トリガーの実装については、CronTriggerがニーズに最適です。タスクが毎日同時に実行されるようにトリガー戦略を作成するために使用できます。

Java コードの例:

Runnable task = /* your task */
TaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.schedule(task, new CronTrigger("0 0 * * *"));
于 2012-12-12T14:04:16.153 に答える