Напишете една работа. Накарайте го да се изпълнява редовно.
На практика вие ще правите нещо от рода на:
SELECT count(*) FROM table WHERE new = 1;
(или каквото и да е)
Пускайте това всяка секунда, 5 секунди, 10 секунди, каквото изглежда разумно въз основа на вашата дейност.
Когато count ==N, стартирайте вашия процес. Когато "време от последното изпълнение" ==5 минути, стартирайте процеса.
Процесът е същият, просто го проверявате по-често с двата критерия.
Това предлага предимство, че няма да получите състояние на измамно състезание, при което заданието се задейства ДВА ПЪТИ (защото Задание A откри броя на вмъкванията, който случайно е бил 5 минути след изпълнението на последното задание). Редки, да, но състезателните условия винаги изглежда активно търсят „редки“ събития, които „никога не се случват“.
Що се отнася до планирането, crontab е лесен, защото не е нужно да поддържате процеса си, да го поддържате жив, да демонизирате и т.н. и т.н.
Ако вече работите в дълго работещ контейнер (сървър за приложения, tomcat и т.н.), тогава този проблем вече е решен и можете просто да го използвате.
Недостатъкът на cron е неговата детайлност, той работи най-много всяка минута. Ако това е твърде дълго, няма да работи за вас. Но ако е наред, тогава има истинска стойност в това да имате прост процес, който просто светва, проверява ли го и се затваря. Разбира се, ще трябва да запази състоянието си по някакъв начин (може да погледне в дневника на задачите, за да види кога е изпълнена последната задача, например).
В рамките на java има много опции:необработени нишки, заспиване, таймери, ScheduledExecutorService, нещо като Quartz, EJB Timer beans (ако работите с Java EE контейнер).
Но аз съм фен на KISS. Ако cron задача може да го направи, оставете го и го направете веднъж.