Я согласен с рекомендацией Говарда, что таймер Swing может хорошо работать здесь (1+), но моя другая проблема с вашим кодом здесь:
manyFunctions();
Что именно происходит в этом месте? Вы звоните много кода, который занимает много времени / ресурсов процессора? Если это так, вам нужно позаботиться о том, чтобы не вызывать это в основном потоке Swing, EDT, а скорее вызывать его в фоновом потоке, но в то же время необходимо обновить компоненты Swing только в EDT. Это может быть упрощено с помощью SwingWorker, и вы можете прочитать больше об этом здесь: Параллелизм в Swing