Quartz ( http://quartz-scheduler.org/ ) を見てください。それはあなたにいくつかの可能性を与えます。1 つの可能性は、リマインダー エンティティを保存すると同時にリマインダー ジョブをスケジュールすることです。別の方法として (おそらくより効果的に)、定期的に実行するジョブをスケジュールし、次回の実行までに予定されているリマインダー エンティティをデータベースにクエリすることもできます。次に、この定期的なジョブは、リマインダー エンティティごとにリマインダー ジョブをスケジュールします。Quartz ジョブを送信するサンプル コード:
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDataMap map = new JobDataMap();
/* put anything necessary here. */
JobDetail job = JobBuilder.newJob()
.withIdentity("MyReminderJobName")
.withDescription("Reminder Job")
.usingJobData(map)
.ofType(MyReminderJob.class)
.build();
SimpleScheduleBuilder once = simpleSchedule().repeatSecondlyForTotalCount(1);
Date reminderDate = new Date(); //reminder event date
Trigger trigger = newTrigger()
.forJob(job)
.withSchedule(once)
.startAt()
.build();
scheduler.scheduleJob(job, trigger);