Структура программы которая должна выполнятся бесконечно

Я хочу написать программу, которая будет выполнятся в фоне и выполнятся долго. Есть ли какие-нибудь best practice для этого? Мне пока ничего лучше вот этого не приходит:

static int FIVE_MINUTES_IN_MILLIS = 300 * 1_000;
static long ONE_HOUR_IN_MILLIS = 3_600 * 1_000;
long itterationTime = 0;
while (true) {
    try {
        Thread.sleep(FIVE_MINUTES_IN_MILLIS);
        itterationTime += FIVE_MINUTES_IN_MILLIS;
    } catch (InterruptedException e) {

    }
    //do smth;   
    if (itterationTime == ONE_HOUR_IN_MILLIS) {
        //do smth 2;   
        itterationTime = 0;
    }
}

Ответы (0 шт):