Написать скедулер. Вот вам пример кода, который находит ближайшее воскресенье, 12:00
Код:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.HOUR_OF_DAY,12);
cal.set(Calendar.MINUTE, 0);
long now = System.currentTimeMillis();
for(;;) {
if(cal.getTimeInMillis()>now && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
break;
cal.add(Calendar.DAY_OF_YEAR,1);
}
Соответственно пишите чтение конфигов. Алогритм определения я вам привел выше, разница между текущим временем и найденным это cal.getTimeInMillis()-now, и скедулите задачу (через ThreadPoolManager например) через наденное время