Обычной практикой является удаление записей базы данных, которые старше некоторого порогового значения. Для этого в таблице базы данных должен быть столбец с отметкой времени, представляющей время вставки или обновления. При выполнении запланированной задачи там выполняется команда (псевдокод, при условии отметки времени «обновления»):
УДАЛИТЬ ИЗ TABLE_NAME, ГДЕ LAST_UPDATED <(CURRENT_TIME - THRESHOLD) </p>
Или существует запрос выбора выполняется для извлечения всех этих записей и обработки их удаления по одному, включая ведение журнала и, возможно, некоторые условные логи c.
Для достижения этой функциональности java SE предоставляет ScheduledExecutorService , которые можно использовать для выполнения отложенных задач:
// initialize scheduler
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
// schedule repeating task
ScheduledFuture future = scheduler.scheduleAtFixedRate(
() -> {
System.out.println("Excuting task...");
},
60,
60,
TimeUnit.SECONDS
);
Будущий объект можно использовать для отмены задачи:
future.cancel(true);
scheduler.shutdown();
Но при использовании корпоративных решений обычно есть библиотеки и интегрированные среды, обеспечивающие функциональность для выполнения запланированные задачи: Кварцевый планировщик , Планирование задач Spring Framework или Службы таймера EJB .